Uncaught TypeError: Cannot use 'in' operator JSON

Uncaught TypeError: Cannot use 'in' operator JSON

输出 PHP 与下面的 json_encode :

{"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);
        });
    }
});

但是运行的时候报错

Uncaught TypeError: Cannot use 'in' operator to search for '36' in....

为什么?以及如何修复它?

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

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

从 php 发送 application/json header,例如 header("Content-Type:application/json");。如果发送正确的 json header 那么浏览器会为你做解析。

因此您的最终代码将类似于

$.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);