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/