0

私は非常に単純なはずの何かに苦労しています。私は何時間もウェブ上で解決策を探し、jQueryのドキュメントをチェックしました。

json文字列を介して送信する単純なリクエストをサーバーに投稿しようとしています。json、encodeURIcomponentなどをエスケープしてみました。これは単純で、すぐに平手打ちすることで打撲傷を負うことになると確信していますが、次のようになります。

これがJavascriptです:

$(document).ready(function() {
$("#mybutton").click(function(e) {
submitMyRequest();  
});
});


function submitMyRequest()
{

var json = [{"id":"1", "area":"south"}, {"id":"2", "area":"north"},{"id":"3", "name":"east"},{"id":"1", "name":"west"}];

 jQuery.ajax({
     url: "test_server.php",
     type: "POST",
     data: {areas: json },
     dataType: "json",
     beforeSend: function(x) {
         if (x && x.overrideMimeType) {
             x.overrideMimeType("application/j-son;charset=UTF-8");
         }
     },
     success: function(result) {
     alert(result);
     }
 });
}

サーバーコードは次のとおりです。

print_r(json_decode($GLOBALS['HTTP_RAW_POST_DATA'],true));

私が得続ける結果は、次のようなアラートです。

null
4

2 に答える 2

1

これによると、$HTTP_RAW_POST_DATAは認識されないMIMEタイプのデータのみが入力されます。これを克服するには、always_populate_raw_post_dataini値をtrueに設定するか、生のPOSTデータにアクセスするための推奨される方法を使用して、php://input

$postdata = file_get_contents("php://input");

また、jsonをサーバーに送信しているようには見えません。これを試してください

data: JSON.strinify({areas: json }),
于 2012-11-13T18:16:56.760 に答える
0

このようにしてみてください:

var json = '[{"id":"1", "area":"south"}, {"id":"2", "area":"north"},{"id":"3", "name":"east"},{"id":"1", "name":"west"}]';

そしてあなたのサーバー側で:

print_r(json_decode($_POST['areas'],true));
于 2012-11-13T18:11:09.557 に答える