如何访问jquery ajax函数返回的数组字符串
我有以下代码,用onkeyup事件搜索在搜索框中键入的字符。
$("#keywords").keyup(function () { var kw = $("#keywords").val(); if (kw != '') { var url = "" + kw; $.ajax({ type: "POST", url: url, datatype: "json", success: function (data) { **alert(data);** $.each(data,function(ptitle, category){ $("#results").html('
'); } } }); }else{ $("#results").html(""); return false; } });
在上面的代码中,当我提醒data
它显示以下数组字符串。
{"pcode":"22","category":"NightTalk","ptitle":"HourlyNightTalk"}
我似乎无法访问pcode
, category
和ptitle
就像我在下一行中所做的那样。 (提醒后)请帮助我如何访问这三个!
这意味着data
是一个字符串,响应是一个简单的JSON编码对象,而不是一个数组。
您必须先解析响应。 您可以通过修复dataType
属性让jQuery为您执行此操作:
dataType: "json" // dataType, not datatype
在回调中, data
现在是一个JavaScript对象,您只需直接访问其属性(了解有关MDN中对象的更多信息- 使用对象 ):
success: function (data) { $("#results").html('
'); }
在这里使用$.each
是没有意义的。 查看文档 ,了解它的function和工作原理。
你提到有时你实际上得到了一个arrays。 在这种情况下,您可能想要使用$.each
。 为了使代码更简单,我建议始终从服务器返回一个数组:
var $results = $('#results'); $results.empty(); $.each(data, function(i, obj){ $results.append('
'); });
你的问题是你误解了jQuery的each()
函数。 回调函数的原型是function(index, value)
,其中索引将是“pcode”,“category”,“ptitle”,值将分别为“22”,“NightTalk”,“HourlyNightTalk”。