2013-07-31 47 views
1

我想知道如果也許這個代碼不起作用,因爲你不能從一個函數返回一個JQuery對象。此代碼不起作用:jquery讀取HTML文件並將該文件作爲對象返回 - 爲什麼它不起作用?

var HTML_FILE_URL = '/Solutions1.htm'; 
var strAll = $.get(HTML_FILE_URL, function (data) { 
         var fileDom = $(data); 
         return fileDom; 
       }); 
$("#qapagediv").append(strAll.html()); 

然而,這個代碼的工作:

var strAll = $.get(HTML_FILE_URL, function (data) { 
     var fileDom = $(data); 
     $("#qapagediv").append(fileDom); 
     return fileDom; 
    }); 
+1

查看[Deferred Objects](http://api.jquery.com/category/deferred-object/)的'.done()'方法。 –

回答

4

您的問題是$.get返回$.Deferred().promise(),而不是從回調返回值。

0

查看$ .get()的文檔http://api.jquery.com/jQuery.get/它不返回回調的值。帶回調成功的函數通常異步運行。

你可以在回調函數

$.get(...).done(function(data) { 
    var strAll = $(data); 
    $("#qapagediv").append(strAll); 
}); 

爲了做這樣的事情,你需要同步運行您的AJAX請求你的第一個例子裏面執行你的任務。同步意味着它在執行移動到下一行之前完成。

var strAll = null; 
$.ajax({ 
    url: HTML_FILE_URL 
    success: function(result) { 
     strAll = $(data); 
    }, 
    async: false 
}); 
... 
$("#qapagediv").append(strAll.html()); 
相關問題