2016-06-11 7 views
0

POSTでPHPスクリプトにJSONを送信しています。 JSONからオブジェクト値を取得できません。次のようにPOSTの形式は:PHPを使用してAjax POSTからJSONを取得できません

[{ "名前": "量"、 "値": "12"}]

のJavascript

("#idForm").submit(function(e) { 

     var url = "post.php"; // the script where you handle the form input. 
     var formData = JSON.stringify($("#idForm").serializeArray()); 
     alert(formData); 

     $.ajax({ 
     type: "POST", 
     url: url, 
     data: formData, 
     dataType: 'json', 
     success: function(dataresponse) { 
      document.getElementById("orderamount").innerHTML = dataresponse.orderamount; 
     } 
     }); 

PHP

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 

$data = array(); 

$json = json_decode(file_get_contents('php://input'), true); 
$data['orderamount'] = $json['amount']; 
//this works 
//$data['orderamount'] = '12345'; 

echo json_encode($data); 
} 

どれでも私が間違ってやっているアイデア?

+0

可能性のある問題を試すことができます。 2)console.log(dataresponse)を実行し、dataresponse.orderamountでデータにアクセスするのが正しいかどうかを確認します。 3)PHPで、実際にifに参加しているかどうか、おそらく何が起こっているのかを追跡するために、.txtファイルまたは.htmlファイルにログを記録する(file_put_contentsを使用する)かどうかを確認してください。これらのすべてのケースでは、javascriptコンソールはあなたの親友です。通常、何が動作していないのか、何が応答として戻ってきたのかを伝えます。 PHPは(ただし、AJAXリクエストを直接経由するのではありません)、したがって第3の点も注意してください。 – briosheje

+0

下記の@swapの答えを見てください。あなたは、多くの名前/値の組を含む配列の構文を持っています。それを配列として扱います。 – YvesLeBorg

+0

ウェブコンソールはあまり役に立ちませんでした。私は、PHPスクリプトからtxtファイルに内容を書きました。出力は - a:5:{i:0; a:2:{s:4: "name"; s:6: "amount"; s:5: "value"; s:2: "12";} } – mmmbaileys

答えて

-2

応答

のdocument.getElementById( "orderamountで

<?php 
$json = "[{\"name\":\"amount\",\"value\":\"12\"}]"; 
$dec = json_decode($json,true); 

for($idx = 0; $idx < count($dec); $idx++){ 
    $obj = (Array)$dec[$idx]; 
    echo $obj["name"]; 
} 
?> 
+1

これはapplication/x-www-form-urlencodedデータではなく、JSONです。 – Quentin

1

要求、および辞書を送信する前に試してみてください").innerHTML =データレスポンス['orderamount'];

-2

、このように、その中に私たちは、JSON配列を解析することができます

setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
0

例jsonには、名前と値の2つのパラメータがあります。

[{ "名前": "量"、 "値": "12"}]

あなたが$json['name']代わりに$json['amount']を使用すべきです。 1))(FORMDATAをCONSOLE.LOGしようとすると、それが正しいかどうかを確認:あなたは、次の例

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
$data = array(); 
$json = json_decode(file_get_contents('php://input'), true); 
if($json['name']=='amount') { 
$data['orderamount'] = $json['value']; 
} 
echo json_encode($data); 
} 
関連する問題