2012-07-27 25 views
0

下面的代碼:JSON從JQuery的AJAX調用比數據庫本身更大

$.ajax({ 
url:"http://.....pullEntireDBPopulation.php", 
cache:false, 
datatype:"json", 
success:function(popData){ 
    alert("Population size: " + popData.length); 
    popProducers = new Array(); 
    for(i=0;i<popData.length;i++){ 
    popProducers[i] = popData[i].ProducerName; 
    } 
}); 
} 

我已經寫了.PHP每一塊數據拉從一個數據庫,我已經在瀏覽器上檢查,所以我知道那不是。儘管如此,每次運行該頁面時,它都會說該數組的大小約爲5000,即使該數組大於整個數據庫。這是怎麼回事??? 如果有幫助,這也是說當我將數據寫入數組時,它們在數組中是未定義的。所以數據被讀入頁面顯然存在問題,因爲我知道它可以自行工作,但我無法弄清楚。

+0

'console.log(popData)'確認它是一個包含您期望的數據的數組或對象。 – 2012-07-27 19:03:43

+0

您可能需要重新考慮您一次處理所有數據的操作。 – Blazemonger 2012-07-27 19:10:12

回答

0

我發現這個問題。 datatype: "json"顯然不會像dataType: "json"一樣渲染我討厭這樣的愚蠢事情!由於我的大寫錯誤,它不會將它讀爲JSON,而只是讀取一個字符串而不是一個對象數組 - >問題。

0

PopData是對象,而不是數組。然後length可能工作不正確。 出於同樣的原因,您不能申請「for」。

嘗試

popData.size()$(popData).size()

popData.each(function(){ popProducers[i] = this.ProducerName; })(或$(popData).each ...)

+0

你怎麼知道'PopData'是一個對象? JSON字符串也可以表示一個數組。 – 2012-07-27 19:18:03

+0

你說得對。但我認爲他可以嘗試把它當作一個變量。 儘管服務器端腳本可能返回一個字符串而不是json。所以「長度」返回5000 - 字符串 – Kir 2012-07-27 19:50:16

+0

中的字符數,如果它不是json,jQuery將觸發失敗回調而不是成功。 – 2012-07-27 19:52:40