我正在尝试解析从PHP functoin返回的关联数组,如下所示:
$.ajax({
type: "GET",
url: "../controllers/Checkpoint.php/getAllCheckpoints"
}).done(function( result ) {
result.foreach(function(index, value){
alert(index + " "+ value);
});
}).error(function(){
});
我在php
中返回数组foreach($result as $row) {
$checkpoints[$row['ID']] = $row['Name'];
}
return json_encode($checkpoints);
从Chrome F12控制台读取数组的结果是
{"1":"check point 1","2":"check point 2"}
我在javascript代码中遇到此错误:
ReferenceError: forEach is not defined
你可以帮我吗
答案 0 :(得分:2)
我建议将jQuery.each()泛型迭代器函数与javascript JSON.parse()结合使用,以完成您尝试执行的操作。
.done(function( result ) {
checkpoints = JSON.parse(result);
$.each( checkpoints, function( index, value) {
alert(index + " "+ value);
});
});
答案 1 :(得分:1)
你应该使用object.forEach()
函数e
大写字母或jQuery函数$.each(object)
result.forEach(function(index, value){
alert(index + " "+ value);
});
如果您尚未设置响应标头Content-type: application/json
,则需要将响应内容解析为JSON
对象使用JSON.parse()
函数
.done(function( result ) {
JSON.parse(result).forEach(function(index, value){
alert(index + " "+ value);
});
})
return
表示return
并将值赋值给任何变量的函数,AJAX
响应需要输出缓冲区,因此服务器端的echo
内容在输出缓冲区后终止脚本
foreach($result as $row) {
$checkpoints[$row['ID']] = $row['Name'];
}
//return json_encode($checkpoints);
header('Content-type: application/json');
echo json_encode($checkpoints);
exit();
header('Content-type: application/json');
表示响应内容类型为json对象
答案 2 :(得分:1)
如果您在客户端上有数据,那么在浏览器上Php就没有问题了。 当你在客户端。 Javascript本机没有函数foreach,你可以使用$ .each函数
$.ajax({
type: "GET",
url: "../controllers/Checkpoint.php/getAllCheckpoints"
}).done(function( result ) {
$.each(result, function(i, data){
console.log(i, data); // this print on console the data that you is run
// for this you should have installed firebug on firefox or chrome already installed some similar.
});
}).error(function(){
});
答案 3 :(得分:0)
首先:你必须用" echo"返回php结果。而不是"返回"。