我将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);
}
知道我做错了吗?
答案 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'];