2012-07-31 104 views
2

我有以下代碼,其中第一部分在觸發下拉選擇後從PHP獲取JSON。結果被放置在一個名爲「結果」的div中,以驗證它是否有效。一切看起來都很好。我還有幾行代碼解析了JSON,並將各個元素顯示在一系列警報中,再次驗證它是否正常工作。但是,在此之後,我嘗試以與創建警報類似的方式解析JSON,只將各個結果放在單獨的數組中。我有一個檢查,以便在執行$ .each時提醒結果,以便我可以查看代碼塊是否正常工作。但是,它不起作用。我猜測可能是我的括號沒有正確設置,或者我需要在某處聲明另一個函數。任何人都可以提出什麼可能是問題?jQuery:將JSON解析爲元素數組

感謝您的幫助。

$(document).ready(function() { 

    $('#routesDropDown').change(function() { 
     var queryParam = 'routesStations=' +$(this).val(); 
     $.post('getstations.php', queryParam, processResponse); 

    }); 

    function processResponse(data) { 
    $('#results').html(data); 

// parse the data and store in variable, "obj" 
var obj = jQuery.parseJSON(data); 
// iterate through each value in the "obj" variable 
$.each(obj, function(key, value) { 
    alert(value.color + ' ' + value.abbr + ' ' + value.lat + ' ' + value.lng); 
}); 

     //THIS IS THE PART THAT DOES NOT WORK... 
    var obj = jQuery.parseJSON(data) { 
     var color = []; 
     var abbr = []; 
     var lat = []; 
     var lng = []; 
     $.each(obj, function(value) { 
      color.push(value.color); 
      abbr.push(value.abbr); 
      lat.push(value.lat); 
      lng.push(value.lng); 
      alert(value.color + ' ' + value.abbr + ' ' + value.lat + ' ' + value.lng);  
    })}; 

}); 
+1

告訴我'JSON'字符串的結構'數據' – diEcho 2012-07-31 04:22:58

回答

1

對於我來說,祕密的jQuery是選擇...

我會做一個快速的「警報(數據)」你的$。每()函數之前,只是要確定你'你得到你認爲你得到的東西...

0

我認爲你的json沒有創建,你可以在控制檯中檢查它,如果代碼沒有返回一個json,那麼你應該在$.post函數中通過json參數像

$.post('getstations.php', queryParam, processResponse,"json"); 

在這裏看到的文檔:jQueryPost

+0

嗨羅漢,謝謝你的repsonse。爲了仔細檢查,我做了一個alert(),並且能夠解析json。看起來json確實存在,我能夠分離出這些元素。但是,我無法通過push語句將元素傳遞到數組中。我現在想知道我是否應該嘗試for循環。我想我會試試看。隨意提供任何其他建議。再次感謝。 – 2012-07-31 13:20:38

1

我認爲回調函數接受兩個值指標和價值

因此,代碼應該是

$.each(obj, function(index, value) {<--- Here i have added index. Like your above code. 
     color.push(value.color); 
     abbr.push(value.abbr); 
     lat.push(value.lat); 
     lng.push(value.lng); 
     alert(value.color + ' ' + value.abbr + ' ' + value.lat + ' ' + value.lng);  
}) 
0
$.post('getstations.php', queryParam, processResponse,"json"); 
queryParam你現在是一個字符串不是一個object對象 jquery api文檔說明這裏是需要傳入一個{xxx:xxx}對象 
+0

好的觀察:一個json元素確實是一個字符串,而不是一個對象。感謝您的幫助。 – 2012-07-31 13:07:56