我有一个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"-循环。