未捕获的TypeError:不能使用'in'运算符JSON

时间:2015-01-06 02:49:15

标签: php jquery json

使用下面的json_encode输出PHP:

{"data_1":"Data 1","data_2":"Data 2"}

在jQuery中我有代码:

$.ajax({
    url : 'process.php',
    dateType: 'json',
    type: 'POST',
    data : {val : data_val},
    success: function(data) {
        $.each(data, function(key, value) {
            alert(key+ " " + value);
        });
    }
});

但是在运行时显示错误

  

未捕获的TypeError:无法在'中使用'运营商搜索' 36'在....

为什么呢?以及如何解决它?

1 个答案:

答案 0 :(得分:2)

我认为您拥有的json数据未转换为json object

使用data = JSON.parse(data);然后尝试each循环

从php发送application / json标头,例如header("Content-Type:application/json");。如果发送了正确的json头,那么浏览器将为您进行解析。

所以你的最终代码看起来像

$.ajax({
    url : 'process.php',
    dateType: 'json',
    type: 'POST',
    data : {val : data_val},
    success: function(data){
        data = JSON.parse(data);
        $.each(data, function(key, value) {
            alert(key+ " " + value);
        });
    }
}); 

或(在php中)

header("Content-Type:application/json");
$data = array( "data_1" => "Data 1", "data_2" => "Data 2"); 
echo json_encode($data);