我想使用JSON将数组发布到PHP文件。这是行不通的。问题是没有任何反应。如果我退出数据类型:“json”然后我得到警报(但没有数据)。
这是我的jquery代码
var arr = new Array();
arr.push('1','Brussels|25');
arr.push('2','Antwerp|40');
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "jsondecode.php",
data: JSON.stringify(arr),
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
这是我的PHP代码(jsondecode.php);
<?php
$array = json_decode($_POST["arr"]);
foreach($array as $el){
$el_array=explode('|',$el);
echo"City=".$el_array[0]." And Age = ".$el_array[1]."";
}
?>
有人知道一个有用的教程吗?
答案 0 :(得分:4)
您必须以此格式发布数据,以便像$_POST["arr"]
data: { arr : JSON.stringify(arr) },
答案 1 :(得分:3)
你到底在想什么?
看起来好像是在试图将键值对放在{-1}}的JavaScript-Array中,期望在键“1”下包含“Brussels | 25”的数组 - 但要小心,你要创建这个数组:arr.push('1', 'Brussels|25');
。
如果要发送json,请发送json-data:
["1", "Brussels|25", "2", "Antwerp|40"]
然后你的ajax电话:
var arr= [{
"city" : "Brussels",
"age" : 25
},{
"city" : "Antwerp",
"age" : 40
}];
因此,您无需爆炸数据服务器端。
服务器端脚本:
$.ajax({
type: "POST",
url: "jsondecode.php",
data: {arr: JSON.stringify(arr)},
success: function(data){
console.log("success:",data);},
failure: function(errMsg) {
console.error("error:",errMsg);
}
});
希望,这对你有帮助。
@edit:顺便说一下,使用<?php
$data = json_decode($_POST["arr"]);
// will echo the JSON.stringified - string:
echo $_POST["arr"];
// will echo the json_decode'd object
var_dump($data);
//traversing the whole object and accessing properties:
foreach($data as $cityObject){
echo "City: " . $cityObject->city . ", Age: " . $cityObject->age . "<br/>";
}
?>
或console.log()
代替警报。警报将导致脚本暂停,直到您单击确定并且您无法在警报中看到对象。
@ 2nd edit:脚本现在已经过测试,我删除了不必要的代码并添加了服务器端代码
答案 2 :(得分:1)
替换:
$array = json_decode($_POST["arr"]);
人:
$array = json_decode($_POST["arr"], true);
答案 3 :(得分:0)
为我工作:
JS:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "jsondecode.php",
data: JSON.stringify({"1": "Brussels", "2": "Antwerp"}),
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
PHP:
<?php
$p = file_get_contents('php://input');
$x = json_decode($p, true);
echo $x["1"];
?>