我是JSON的新手。js json.stringify to PHP json_decode
在JS,创建值的数组,像这样:
var arrFields = $("td>.frmInput").map(function(){
return {
id: this.id,
value: $(this).val()
};
}).get();
我然后AJAX它们像这样的服务器:
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: "Fields=" +JSON.stringify(arrFields),
success: function(recd) {
alert(recd);
}
});
注意,有字符串的混合物,加JSON.stringified(?)数组。 (有额外的字符串值发送,所以数据必须保持为字符串。)
在PHP方面,我需要将收到的Fields
字符串变成一个关联数组。
这样做:
$jsonAsStr_Fields = $_POST['Fields'];
die($jsonAsStr_Fields);
返回此字符串在alert()
:
[{"id":"rateDriver","value":"Jacques Villeneuve"},{"id":"rateCar","value":"Chev"}]
这样做:
$arrFields = json_decode($jsonAsStr_Fields, TRUE);
$driver = $arrFields['rateDriver'];
$car = $arrFields['rateCar'];
$tire = $arrFields['rateTire'];
die('Driver: [' .$driver. '] Car: [' .$car. '] Tire: [' .$tire. ']');
返回此:
Driver: [ ] Car: [ ] Tire: [ ]
如何将$ jsonAsStr_Fields字符串转换为assoc数组,并将正确的值输出到alert中?
非常有帮助。 ** + 1 **我现在看到我应该如何创造价值。但是,在PHP方面,它仍然不会导致assoc数组。 $ arrFields = json_decode($ jsonAsStr_Fields,TRUE);'仍然输出:'Driver:[] Car:[] Tyre:[]' – gibberish
最后一个问题是,字符串化数据到达PHP端报价标记逃脱,像这样:'{\“rateDriver \”:\“Jacques Villeneuve \”,\“rateCar \”:\“Chev \”}' - 我认为这是发生在回程(进入警报)。添加一个PHP ** str_replace **'$ jsonAsStr_Fields = str_replace(“\\”,“”,$ _POST ['Fields']);'解决了这个问题。你的建议让我走上了正确的轨道。谢谢。 – gibberish
您运行的是哪个版本的PHP?魔术引号自5.3以来已被弃用:http://www.php.net/manual/en/security.magicquotes.php –