json在jquery中解析时的问题

时间:2014-03-26 17:03:12

标签: javascript php jquery ajax json

我有一个像这样的数组来自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
                });
}

5 个答案:

答案 0 :(得分:1)

从它的外观来看,你已经有了一个可以使用的结构,但它不是Object。 。 。它是Objects的数组,因此,要访问label参数,您需要通过提供索引来识别要查看的对象,如下所示:

data[n].label

使用您的示例,您将获得各种索引的这些值:

  • data [0] .label ==>密西西比州密西西比州,
  • data [1] .label ==>密西沙加,安大略省
  • data [2] .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
                });
}
})