javascript - jquery $.ajax() 及其成功回调 - 它返回到哪里?

标签 javascript jquery ajax callback

jquery ajax成功回调返回到哪里?


我已经编写了一个请求方法来进行 ajax 调用,检测我是否提供了回调或返回响应 XML 的数据节点。

请求方式:

function request(request, dontRefresh)
{     
   var requestXML = composeRequestXML(request); 
   $.ajax({
      url: 'someProcessor.php',
      type: 'POST',
      cache: false,
      async: dontRefresh,
      timeout: 5000,
      data: "query="+requestXML,
      success: function(response)
      {
         //parses xml into a js object
         var responseObj = parseResponseXML(response);

         if(request.callback){
            request.callback(responseObj);
         } else {
            // responseObj.response[0].data[0] is the data 
            // node of the response Obj.
            // this is what i see being the problem - 
            // I DON'T KNOW WHERE THIS IS RETURNED TO!!
            return responseObj.response[0].data[0];
         }
      }
   });
}

此请求将使用回调

var requestObj = new Object();
    requestObj.callback = function(responseObj){someCallbackFunction(responseObj);};
    requestObj[0] = new Object();
    requestObj[0].module = "someModule";
    requestObj[0].action = "someModuleMethod";
request(requestObj);
//results are returned to the function someCallbackFunction()

这是我想要完成的一个例子

var requestObj = new Object();
    requestObj[0] = new Object();
    requestObj[0].module = "userManager";
    requestObj[0].action = "GET_USERID";

var userId = request(requestObj, false); //make the request asynchronous

我试过返回 $.ajax() 函数本身……像这样:

function request(request, dontRefresh){
   return $.ajax({/*...options...*/);
}

但这绕过了我开发的xml解析器并返回了XHR对象。我想使用这种技术来注册变量。所以本质上...

我将通过回调使用此方法或使用它设置变量。

最佳答案

它返回给 jquery,jquery 丢弃它。如果你想让你的代码在加载某些东西之前停止,请使用同步 ajax。但这会使页面在 ajax 请求完成之前无响应,所以请不要这样做!

同步 ajax 示例(无 jquery):

var ajax=new XMLHttpRequest();
ajax.open("GET", url, false);
ajax.send(null);
return ajax.responseText;

注意:对于 IE 兼容性,这会变得有点复杂,这只是概念验证。这将是执行此操作的 jquery 方式:How can I get jQuery to perform a synchronous, rather than asynchronous, Ajax request?

关于javascript - jquery $.ajax() 及其成功回调 - 它返回到哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080553/

相关文章:

javascript - 为什么我在使用 NODEJS 和 EXPRESSJS 通过 RESTAPI 中的参数(ID)向服务器发出请求后没有收到正确的响应

javascript - 如何使用javascript在html中制作粘性菜单栏

jquery - 尝试删除从按钮生成的 <li> 时,remove() 不起作用

javascript - 如何从 ajax 调用返回多个值/数组?

javascript - 选中行时获取其他列数据的jQuery代码

javascript - 如何从父窗口顶部的 iframe 内打开 colorbox

javascript Canvas : chrome touch screen not working

Jquery Mobile listview 不使用 json 数据渲染

javascript - https 导致立即中止,而 http 正常

php - 使用 Ajax 和 PHP 进行数据输出