当您有一个值时,Json会以正确的方式进行解析


Json parsing the right way when you have a single value on it

我有一个jquery函数,它向一个方法发送一些数据,并从php接收一个简单的json(json返回通过get发送的数据)。

$("#filter").submit(function() {
        $.ajax({                                        
            data:$("form").serialize(),                 
            type: $(this).attr("get"),                  
            url:"get.php",                              
            success: function(response){                
                $("#rez").html(response);               
            }
        });
        return false; 
    });

这是我得到的的json

{"list1":["bike","car","bus"],"list2":["1 seat","4 seas","10 seats"],"list3":["cheap","medium","expensive"],"list4":["green energy","bio","petrol"]}

我试着这样迭代:

$.each(response, function(index, val)
                {
                    alert(response[index]);
                    });

此外,尝试过这个:

alert(val);

我如何迭代它并发出简单的警报?目标是将每个项目附加到"#rez"段落中。但目前,我只想迭代json,但无法理解它。

还有!我有另一个类似的json:["first val","second val"]我该如何迭代它?尝试了上述方法,但都没有成功。

在开始循环之前,您必须将JSON string解析为Object,在这种情况下,您可以使用以下方法:

var obj = JSON && JSON.parse(response) || $.parseJSON(response);
$.each(obj, function(index, val) {
    // ...
});

如果在ajax params对象中没有提供像dataType:"json"这样的数据类型,则必须将字符串显式解析为对象。点击此处阅读更多关于$.parseJSON的信息。

我也遇到过类似的问题,并使用了这个:

for (var key in someObject) {
  if (someObject.hasOwnProperty(key)) {
     var something = someObject[key];
     console.log(something)
  }
}

基本上在这里使用"for"-循环。

相关文章: