无法使用PHP从Ajax POST获取JSON

时间:2016-06-11 12:15:37

标签: javascript php json ajax post

我将POST中的JSON发送到我的PHP脚本。我无法从JSON获取对象值。 POST的格式如下:

  

[{ “名称”: “量”, “值”: “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); 
}

知道我做错了吗?

4 个答案:

答案 0 :(得分:1)

我们可以解析JSON数组和其中的字典,就像这样,

<?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 :(得分:0)

在您的示例中,json有两个参数:name和value。

  

[{&#34;名称&#34;:&#34;量&#34;&#34;值&#34;:&#34; 12&#34;}]

您应该使用$json['name']代替$json['amount']。您可以尝试以下示例

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); 
}

答案 2 :(得分:-2)

请在发送请求前尝试

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

答案 3 :(得分:-2)

回复

document.getElementById(“orderamount”)。innerHTML = dataresponse ['orderamount'];