Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery将ajax结果设置为外部变量回调_Jquery_Ajax_Callback - Fatal编程技术网

jquery将ajax结果设置为外部变量回调

jquery将ajax结果设置为外部变量回调,jquery,ajax,callback,Jquery,Ajax,Callback,我需要为ajax查询的结果设置一个变量。我意识到我不能只在success函数中返回result,因为这是一个异步调用。但要实现这一点就需要一个回调函数,而不是设置为同步调用 我希望实现以下目标: myMethod: function() { var result = function(callback) { this.getResults(params) } }, getResults: function(params) { $.ajax({ type

我需要为ajax查询的结果设置一个变量。我意识到我不能只在success函数中返回result,因为这是一个异步调用。但要实现这一点就需要一个回调函数,而不是设置为同步调用

我希望实现以下目标:

myMethod: function() {
   var result = function(callback) {
      this.getResults(params)
   }
},

getResults: function(params) {
   $.ajax({
      type: 'GET',
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data).call();
      }
   });
}
其中结果=数据


我知道我的语法不对,我尝试过很多变体,但还没有找到有效的方法。任何帮助都将不胜感激。谢谢大家!

你很接近。将回调函数传递给
getResults

myMethod: function() {
    this.getResults(params, callback);
},

getResults: function(params, callback) {
   $.ajax({
      type: 'GET',
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data);
      }
   });
}

请注意,我删除了
var result=
,因为考虑到您提到的异步性,这是行不通的。如果您需要对
数据执行进一步的处理,则必须在回调中执行。

您已经非常接近了。将回调函数传递给
getResults

myMethod: function() {
    this.getResults(params, callback);
},

getResults: function(params, callback) {
   $.ajax({
      type: 'GET',
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data);
      }
   });
}

请注意,我删除了
var result=
,因为考虑到您提到的异步性,这是行不通的。如果需要对
数据执行进一步处理,则必须在回调中执行。

是否尝试将async设置为false

myMethod: function() {
   var result = function(callback) {
      this.getResults(params)
   }
},

getResults: function(params) {
   $.ajax({
      type: 'GET',
      async:false, //<-- Here
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data).call();
      }
   });
}
myMethod:function(){
var result=函数(回调){
this.getResults(参数)
}
},
getResults:函数(参数){
$.ajax({
键入:“GET”,

async:false,//是否尝试将async设置为false

myMethod: function() {
   var result = function(callback) {
      this.getResults(params)
   }
},

getResults: function(params) {
   $.ajax({
      type: 'GET',
      async:false, //<-- Here
      url: 'some/url',
      data: params,
      success: function(data) {
         callback(data).call();
      }
   });
}
myMethod:function(){
var result=函数(回调){
this.getResults(参数)
}
},
getResults:函数(参数){
$.ajax({
键入:“GET”,

async:false,//但要实现这一点,将使用回调函数,而不是设置为同步调用……并且您的代码不工作(
callback
未定义,等等)不要只是复制OP的代码。OP明确表示他们不想这样做。但要实现这一点,将使用回调函数,而不是设置为同步调用…并且您的代码不起作用(
callback
未定义,等等)不要只是复制OP的代码。OP明确表示他们不想这样做。谢谢!如果我没有在myMethod中为变量分配数据?那么我如何引用它?对不起,你是说
回调
而不是
数据
?我不明白。不确定;)我希望myMethod中的一个变量等于数据。数据是一个json响应,我希望循环通过它,并将其与我在myMethod中设置的另一个变量进行比较。这可能吗?好的。你不能这样做,因为异步执行。正如我在回答中所说,依赖
数据的所有内容都必须作为回调传递(除非你愿意接受同步执行,而你已经说过你不愿意)。将依赖于
数据的逻辑从
myMethod
中取出,并将其放入传递给
getResults
callback
函数中。好的。我想我可能需要重新思考我试图实现的目标。至少我现在知道了回调的语法;)谢谢!如果我没有在myMethod中为变量分配数据?那么我如何引用它?对不起,你是说
回调
而不是
数据
?我不明白。不确定;)我希望myMethod中的一个变量等于数据。数据是一个json响应,我希望循环通过它,并将其与我在myMethod中设置的另一个变量进行比较。这可能吗?好的。你不能这样做,因为异步执行。正如我在回答中所说,依赖
数据的所有内容都必须作为回调传递(除非你愿意接受同步执行,而你已经说过你不愿意)。将依赖于
数据的逻辑从
myMethod
中取出,并将其放入传递给
getResults
callback
函数中。好的。我想我可能需要重新思考我试图实现的目标。至少我现在知道了回调的语法;)