我有一个像这样的数组来自php文件和json_encode。
[{"label":"Mississippi State, Mississippi","value":"mississ"},
{"label":"Mississauga, Ontario","value":"mississ"},
{"label":"Mississippi Station, Ontario","value":"mississ"}]
这个数组是动态的。我想提醒这个数组的标签。
JQUERY:
var obj = $.parseJSON(data);
alert(obj.label);
它给我一个像obj一样的错误。
编辑:
基本上我想把这些值放在下拉搜索框中:像这样的jquery plugin
AJAX:
$.ajax({
url: "ajax/ir_populate_search.php",
dataType: "json",
type: "POST",
data: {
keyword: request.term,
path: path
},
success: function(data){
var obj = $.parseJSON(data);
var availableCities = obj.label;
$( "#txtLocation" ).autocomplete({
source: availableCities
});
}
答案 0 :(得分:1)
从它的外观来看,你已经有了一个可以使用的结构,但它不是Object
。 。 。它是Objects
的数组,因此,要访问label
参数,您需要通过提供索引来识别要查看的对象,如下所示:
data[n].label
使用您的示例,您将获得各种索引的这些值:
因此,要遍历它们并获取每个条目的数据,您可以执行以下操作:
for (i = 0; i < data.length; i++) {
. . . do something with: data[i].label . . .
. . . do something with: data[i].value . . .
}
答案 1 :(得分:1)
你不需要解析json,它已经是json了。使用它;
$( "#txtLocation" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "ajax/ir_populate_search.php",
data: {
keyword: request.term,
path: path
},
dataType: "json",
success: function( data ) {
response( $.map( data, function( item ) {
return {
label: item.label,
value: item.value
}
}));
}
});
}
});
答案 2 :(得分:0)
在javascript中使用json对象不需要jquery
尝试类似的东西:
$data = [{"label":"Mississippi State, Mississippi","value":"mississ"},
{"label":"Mississauga, Ontario","value":"mississ"},
{"label":"Mississippi Station, Ontario","value":"mississ"}]
$data[0].label
答案 3 :(得分:0)
如果你这样做dataType: "json"
,jQuery会为你做JSON解析,所以data
已经是一个JavaScript对象了。移除var obj = $.parseJSON(data);
并直接使用data
。
答案 4 :(得分:0)
数据已经是json对象$.parseJSON用于将JSON字符串解析为对象 像这样:
$.parseJSON('[{"label":"Mississippi State, Mississippi","value":"mississ"},{"label":"Mississauga, Ontario","value":"mississ"},{"label":"Mississippi Station, Ontario","value":"mississ"}]')
只需使用数据并添加到数组中,您使用的值就可以使用
$.ajax({
url: "ajax/ir_populate_search.php",
dataType: "json",
type: "POST",
data: {
keyword: request.term,
path: path
},success: function(data){
//data is already the array of objects
//just loop them
var availableCities = [];
for(i in data){
availableCities.push(data[i].label)
}
$( "#txtLocation" ).autocomplete({
source: availableCities
});
}
})