2012-12-06 22 views
-1

可能重複:
Variable doesn’t get returned JQueryJQuery的阿賈克斯取得成果正在失去價值

我不知道這個問題可能是這裏的話,但我失去的結果值,我JQuery Ajax .get調用。 (代碼簡化問題)

文件:SomeJSFile.js

var MyApp = function() { 

this.GetAThing = function(url){ 

var result = ""; 
     $.get(url, function (data) { 
      result = data; 
      alert(data); // Alert works and 'data' looks great! 
      result = data; 
     }); 
     alert(result); // nothing, no value 
     return result; // no good since it has no value 
    }; 

return this; 
}; 

我正在使用用於測試的基本的HTML頁面文件。

已經閱讀:jQuery async ajax query and returning value problem (scope, closure)

+0

請看看我鏈接到的問題。你在右邊也有一些鏈接,因爲這是SO上最常問的問題之一。我希望這會讓你明確ajax的異步速度。 –

+0

感謝您不要抨擊我!這確實是重複的。 –

+0

有一個原因經常被問到:幾乎每個人都會首先想到它;) –

回答

1

既然你提醒的result值發送關閉請求,這是異步後,result仍然有其舊值。只有當請求完成時,該值纔會發生更改,這是執行處理程序的時間點。

這裏是發生了什麼時間表:

  1. result分配的""
  2. 值一個Ajax請求,將發送到一個URL
  3. result值警告(它仍然是空字符串)
  4. AJAX請求已完成
  5. result的值設置爲響應
  6. 響應的價值驚動
0

我想你會得到的結果值從內調用的唯一方法是調用內部函數和外部函數中使用其返回值。可能是這樣的:

var MyApp = function() { 
function getUrl() { 
    $.get(url, function (data) { 
    result = data; 
    alert(data); 
    result = data; 
    return result; 
    }; 
} 

var result = getUrl(); 
return result; 
} 
+0

這是行不通的。 'getUrl'返回undefined。 –