首页 文章

“在AJAX jQuery中获取JSON字符串响应时,不能使用'in' operator ..”

提问于
浏览
0

我正在尝试在laravel中创建一个JSON数组,然后尝试通过ajax jquery获取它 . 它确实创建了JSON,但是从jquery中获取它时会产生问题 . 我无法在那里获取键值对 .

这是在Laravel(PHP)中创建JSON数组的代码:

foreach ($userIds as &$userId) {
    $data[] = json_encode(array("Id"=>$id,"Name"=>$name,"HashId"=>$hashId));
}
return $data;

PS . $data 显示了这种反应:

[
  "{"Id":"111","Name":"abc","HashId":"I1J6EDO"}", 
  "{"Id":"112","Name":"xyz","HashId":"MDLYW9K"}"
]

这就是我试图调用ajax req的方式:

$.ajax({
        type: 'GET',
        url: '/url/goes/here',
        dataType: "json",
        success: function(data) {
            $.each(data, function(key, value){
                $.each(value, function(key1, value1){
                    console.log(value1);
                });
            });
        }
});

控制台显示错误: Uncaught TypeError: Cannot use 'in' operator to search for..

经过一些搜索,我明白可能响应是字符串JSON数组而不是JSON数组或obj(如预期的那样)

我需要帮助才能获取键值对 . 我也愿意改变我在laravel中编码JSON的方式 . 请帮忙,因为我是JSON和AJAX的新手

1 回答

  • 2

    您应该在构建数组后对所有内容进行编码

    $data = array();
    
    foreach ($userIds as $userId) {
        $data[] = array("Id"=>$id,"Name"=>$name,"HashId"=>$hashId);
    }
    return json_encode($data);
    

相关问题