2012-07-19 32 views
0

我的功能很簡單,並且基於我發現的here。但我似乎無法使它工作,最新錯誤?爲什麼不能把結果拿出來jQuery AJAX

function ajax(url) { 
    var result; 
    $.ajax({ 
     url: url, 
     success: function(data) { 
      result = data; 
      //$('#test').html(data); 
      } 
     }); 
    return result; 
    } 

的功能是獲取數據,因爲如果我去掉註釋的代碼並調用它,則該數據示出了#TEST元件內部。但是,如果我寫

var test = ajax('my-url.php'); 
$('#test').html(test); 

那麼它不工作。我的猜測是,出於某種原因,「數據」中的數據沒有存儲在變量「result」中。但我不知道爲什麼,也不知道如何解決它。任何幫助表示讚賞。

回答

2

在AJAX調用完成之前,result變量沒有被更改,此時ajax函數已經返回。這是整個回調點,即在事件完成時安排任務執行的能力。

Javascript(瀏覽器內)是固有異步的。

或者,您可以將async: false傳遞給$.ajax呼叫,它會一直等到它完成,但恢復到原始樣式更有意義。

編輯:它看起來像你在做什麼可以用$.load()完成。

+0

美麗,就是這樣,謝謝! – Sophivorus 2012-07-19 01:26:37

1

如果修改$.ajax調用不異步執行,將工作像您期望:

function ajax(url) { 
    var result; 
    $.ajax({ 
    async: false, 
    url: url, 
    success: function(data) { 
     result = data; 
     //$('#test').html(data); 
     } 
    }); 
    return result; 
} 

$.ajax函數立即返回,不等待AJAX​​調用返回。

+0

謝謝,我選擇了其他答案,因爲經過一番閱讀,我決定使用$ .load() – Sophivorus 2012-07-19 01:27:17

相關問題