使用foreach函数时的javascript异常

时间:2014-12-11 17:05:41

标签: javascript php jquery

我正在尝试解析从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
你可以帮我吗

4 个答案:

答案 0 :(得分:2)

我建议将jQuery.each()泛型迭代器函数与javascript JSON.parse()结合使用,以完成您尝试执行的操作。

jQuery.each()

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结果。而不是"返回"。