我正在使用jQuery的.ajax
将一个相当简单的对象编译发送到php脚本。我想从 PHP 脚本中的每个对象中提取一个值。javascript是:
var obj = [{id:1, name:"val1"}, {id:2, name:"val2"},{id:3, name:"val3"}];
$.ajax({
type: "GET",
url: "call.php",
contentType: "application/json",
data: {type: "stream", q: JSON.stringify(obj)},
success: function(response){
alert(response);
}
});
调用.php文件写为:
if($_GET['type']=='stream'){
$obj = json_decode($_GET['q']);
for($i=0;$obj[$i];$i++){
echo $obj[$i]->{'name'}." ";
}
}
但是这返回 0,我根本无法弄清楚原因。
其次,尝试在javascript中使用type:"POST"
,在php中使用$_POST
,但这完全失败了。
data: {type: "stream", q: JSON.stringify(obj)},
而不是这种使用
data: {type: "stream", q: obj},
ajax 选项中缺少dataType: 'json'
。 contentType
选项仅用于发送数据。
添加数据类型后,请尝试以下操作:
echo $_GET['q'];
它应该只返回你发送的 json 字符串。如果不需要在控制台中查看请求以查找问题