2016-05-04 9 views
0

目標:のSerializeデータ、PHPでデータを進める(と答える)、AJAXを使用してHTTP POSTリクエストでそれらを送信

問題: PHPの$の_POST変数があると思われます空

JS/AJAX

var postData = [cmd, data]; 
alert(postData = JSON.stringify(postData)); 

$.ajax({ 
    url: "./backendTag.php", 
    type: "post", 
    data: postData, 
    dataType: 'json', 
    success: function (response) { 
     alert(response); // Empty 
     //logToServerConsole(JSON.parse(response)); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     logToServerConsole("E3"); // Communication Error 
     console.log(textStatus, errorThrown); 
    } 
}); 

PHP

<?php echo json_encode($_POST); 

答えて

1

同じ理由は、おそらくです。コードを追加する前に、これらの状況でデバッグする方法のヒントをいくつか追加してみましょう。

まず、リクエストが適切に構成されているかどうかを確認します。ブラウザのdevツールでネットワークを調べます。第2の方法は、彼らがPHP

に受け取ってきた場合は、すべてのPOSTパラメータを一覧表示し、確認するために$ _POST上のvar_dumpを使用することができ

は、今までのコードは

を行くように、ここではJavaScript

です
$.ajax({ 
    method: "POST", 
    url: "url.php", 
    data: { name: "John Doe", age: "19" } 
}).done(function(msg) { 
    alert(msg); 
}); 

とPHPで、あなたは、単に使用してチェックすることができ

<?php 
print $_POST["name"]; 
?> 

これは完全に動作します。あなたが書いたものがjsonの文字列であると思われるのに対し、javascriptのデータがどのようにリストになっているかに注目してください。

-1

JSONコンテンツは$ _POSTグローバルに解析されません。 //入力:あなたがそれらに到達したい場合は、PHPから取得しよう

file_get_contents('php://input') 

そして私は、AJAX要求中にコンテンツタイプを与えるお勧め:それは働いていない場合

contentType: 'application/json', 

、以下のように、JSON.Stringifyで、データを文字列として設定してみてください:あなたはJavaScriptで適切に掲示されていないので、

data: JSON.stringify(postData) 
0

明らかに、シリアル化した後で直接配列を渡すことはできません。次のコードは、この問題を解決しました。 (分割配列)

data = JSON.stringify(data); 
var JSONdata = {"cmd" : cmd, "data" : data}; 

$.ajax({ 
    url: "./backendTag.php", 
    type: "post", 
    data: JSONata, 
    dataType: 'json', 

    /* Handlers hidden*/ 
}); 
+0

質問:大型配列についてはどうすればこのようにフォーマットする必要がありますか? –

+0

なぜデータを文字列化する必要がありますか? – mtizziani