-1

可能重复:
变量未返回 JQuery

我不确定这里可能出现什么问题,但我正在丢失我的 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 查询和返回值问题(作用域、闭包)

4

2 回答 2

1

由于您result在发送异步请求后立即提醒值,因此result仍然具有其旧值。该值仅在请求完成后更改,即处理程序执行的时间。

以下是发生的时间线:

  1. result被赋值为""
  2. AJAX 请求被发送到一个 url
  3. 的值result被警告(它仍然是一个空字符串)
  4. AJAX 请求完成
  5. 的值result设置为响应
  6. 响应的值被警告
于 2012-12-06T20:21:23.303 回答
0

我认为从内部调用中获取结果值的唯一方法是调用内部函数并在外部函数中使用它的返回值。可能是这样的:

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

 var result = getUrl();
 return result;
}
于 2012-12-06T20:40:45.080 回答