对不起,我是jQuery的新手,所以这个问题可能看起来很愚蠢。
我有一个泛型函数,它将调用一个$.get来从URL中检索一些数据,然后我想将其赋值给一个变量,而不是一个控件。
这是我的函数,它已经被简化,以清除“噪音”…
function LoadFromURL(url) {
    var response = "";
    $("textarea#dump").val("url=" + url);   // Shows the URL, no problem
    $.get(url, "", function (data) {
        response = data;
        $("textarea#dump").val(response);   // Shows the data, no problem
    });
    $("textarea#dump").val(response);   // Shows NOTHING!
    return (response);
}问题是,在回调函数中,response值很容易赋值,但是当它到达return (response)时,变量就是空的。
发布于 2014-05-13 22:14:52
Shows NOTHING行启动得太快了,没有什么用处。您必须从回调函数开始,然后从那里开始。你可以从回调中调用一个方法。
这样叫它:
var cb = function(data) {
  $("textarea#dump").val(data);  
}
LoadFromUrl("someUrl", cb);或者像这样内联:
LoadFromUrl("someUrl", function(data) {
   $("textarea#dump").val(data);  
});如下所示更改您的方法:
function LoadFromURL(url, cb) {
  $("textarea#dump").val("url=" + url);   // Shows the URL, no problem
  $.get(url, "", function (data) {
     cb(data);  //<-- call the CallBack method
  });
}这更像是javascript的行为,而不是jQuery,回调是js中的一种生活方式。
https://stackoverflow.com/questions/23633610
复制相似问题