2011-04-29 90 views
0
var rowData = []; 

function someName() { 
    JsonClient.onload = function() { 
     rowData.push("sasas"); 
     rowData.push("sasas1"); 
     rowData.push("sasas2"); 
     rowData.push("sasas3"); 
    }; 

    return rowData; 
} 

這會返回一個空的rowData。爲什麼?這個函數返回什麼?一個空陣列或對象陣列

夥計們,這是一個錯字的錯誤由我而張貼

+0

你必須在每個「推」行語法錯誤 – 2011-04-29 07:36:18

+0

嗯,我想,該rowData是一個沒有你的someName()函數的範圍,Bcoz特此聲明裏面的其他功能.....? – Pushpendra 2011-04-29 07:37:07

+0

你爲什麼不自己測試:D – Headshota 2011-04-29 07:37:15

回答

3

功能someName不會被調用(例如someName();)。由於它永遠不會被調用,因此push語句永遠不會執行。

即使被調用,someName函數也會將一個匿名回調函數分配給JsonClient.onload。您的代碼不會向我們展示JsonClient是什麼,但它似乎是一個安全的假設,它是HTTP響應的事件處理程序。在瀏覽器收到HTTP響應之前,該函數將不會被調用,此時return語句已經被執行。 您不能從Ajax請求返回,您必須處理回調本身中的數據

0

你忘了你在竭力推動。一旦你這樣做,它會返回一個字符串數組每個字符串關閉報價。

+0

我改正了...它...錯字錯誤 – theJava 2011-04-29 07:37:14

+0

它修復了這個問題嗎? – Marty 2011-04-29 07:37:51

+0

不...這是不是問題...爲什麼我的rowData是空的 – theJava 2011-04-29 07:40:34

0

你沒有關閉字符串...這應該工作 var rowData = [];

function someName(){ 
    JsonClient.onload = function(){ 
    rowData.push("sasas"); 
    rowData.push("sasas1"); 
    rowData.push("sasas2"); 
    rowData.push("sasas3"); 
}; 

return rowData; 

}

1

你有一個函數聲明一個匿名函數,直到你的JsonClient加載後纔會執行。

你需要這樣做:

var rowData = []; 
function someName(){ 
    JsonClient.onload = function(){ 
    rowData.push("sasas"); 
    rowData.push("sasas1"); 
    rowData.push("sasas2"); 
    rowData.push("sasas3"); 
    useRowData(rowData); 
    }; 
    // here I would expect a call like JsonClient.send(); 
} 
function useRowData(rowData) { 
    alert(rowData); 
} 
someName(); // execute the actual function