2014-03-26 134 views
0

我有一個這樣的數組,從PHP文件與json_encode來。問題,而json解析jquery

[{"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爲null。

編輯:

基本上我希望把下拉菜單搜索框中這些值:像這樣的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

你可以給你的ajax調用代碼,因爲如果你不使用dataType:json那麼你的數據沒有響應字符串。它在data.responseText中。嘗試$ .parseJSON(數據。responseText的); – Fisherman

+0

檢查我的編輯..我正在使用json dataType .. –

+0

你爲什麼要做json對象的parseJson?我的意思是數據已經是JSON。 –

回答

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 
        } 
       })); 
      } 
     }); 
    } 
}); 
+0

它適用於我..這裏只是一個問題。我無法選擇搜索結果。選擇後應該填入文本框中。 –

+0

謝謝..它的工作.. –

0

你不需要jQuery的使用JSON對象in javascript

嘗試類似的:

$data = [{"label":"Mississippi State, Mississippi","value":"mississ"}, 
     {"label":"Mississauga, Ontario","value":"mississ"}, 
     {"label":"Mississippi Station, Ontario","value":"mississ"}] 

$data[0].label 
1

從外觀上看,你已經有了一個可以使用的結構,但它不是Object。 。 。它是Objects數組,因此,訪問label參數,你需要確定通過提供其索引,這樣你想看看,哪個對象:

data[n].label 

使用你的榜樣,你會得到這些值,對於各個索引:

  • 數據[0] .label ==>密西西比州,密西西比州
  • 數據[1] .label ==>安大略省米西索加
  • 數據[2] = .label =>密西西比站,安大略省

因此,要通過所有這些,獲得每個條目的數據,你可以做這樣的事情循環:

for (i = 0; i < data.length; i++) { 
    . . . do something with: data[i].label . . . 
    . . . do something with: data[i].value . . . 
} 
0

如果你這樣做dataType: "json",jQuery不會JSON解析給你,所以data已經是一個JavaScript對象。直接刪除var obj = $.parseJSON(data);並與data一起使用。

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 
       }); 
} 
})