2012-03-19 60 views
2

我遇到了我的jQuery的變量的問題,請按照代碼:JQuery的變量問題

var resp; 
if(itcode != ""){ 
    resp = $.ajax(
     {url: url_rq} 
    ); 
    resp.done(function() { alert(resp.responseText); }); 

} 

如果我把「resp.responseText」像這樣它上面打印的響應,但如果我試試這個代碼:

var resp; 
if(itcode != ""){ 
    resp = $.ajax(
     {url: url_rq} 
    ); 

} 
alert(resp.responseText); 

它打印「未定義」,我的「resp」變量發生了什麼?

回答

2

你Ajax的例子是異步,因此您需要使用回調函數(如第一個示例中所示)來獲取結果並對結果進行處理。在第二個示例中,您沒有使用回調函數,因此在Ajax調用返回之前觸發警報。

0

好,因爲$.ajax是異步的,將完成您的alert()執行後顯示出來,所以基本上在RESP變量undefined,因爲它尚未通過Ajax請求處理您的警報的背景下。

1

在你的第二個代碼,當它打印變量,Ajax請求仍然在飛,你不應該這樣的代碼時,只按照第一樣品AJAX異步

0

我覺得不同的是,當你調用

resp.done(function() { alert(resp.responseText); }); 

它等待AJAX​​返回答案,然後打印變量。

如果您更改該行的外部,您將在兩者上得到未定義的行。

事情是你總是要定義一個回調函數來開始使用它的返回值。 Javascript是異步的,不會等到請求結束。