我的页面上有几个ajax调用,我想将它们合并到一个函数中。
现在,我在几个地方使用了这种类型的函数:
function AjaxCallOne () {
//do something
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: TheURL,
data: "{'TheData':'" + JsonData + "'}",
dataType: "json",
cache: "false",
success:...
error:...
});
}我想要编写一个函数,它将用于所有ajax调用,如下所示:
function MyGeneralAjaxCall(TheData, TheURL, TheSuccessFunction, TheErrorFunction) {
$.ajax({ .... });
}我的问题是:如果我这样做了,并且用户几乎同时发送了两个ajax调用,直到在第一个调用的返回数据返回之前进行了第二个ajax调用,那么成功或错误函数是否会触发正确的调用。我担心,如果用户在第一个调用返回之前触发了第二个调用,那么将执行的成功函数将不是用于正确的ajax调用。
谢谢。
发布于 2011-12-10 11:15:23
您的方法将如您所期望的那样工作。您传入的每个成功函数等都将被每个关联的AJAX调用单独使用。(您的所有参数将保留在一起。)
发布于 2011-12-10 11:34:00
首先,ajax请求没有单一的全局回调集。每个ajax调用都有自己的一组回调函数。
第二:$.ajax({...})是你的MyGeneralAjaxCall...如果您认为需要一组默认选项,则更好的方法是设置
var defaultoptions = { type: "POST", ...} //put default options, mimetypes, etc, here (或者返回它的东西),然后在需要的地方做:
var myajaxoptions = $.extend({},defaultoptions,myoverrides);
$.ajax(myajaxoptions);这更具可扩展性。不需要编造“男人在中间”。您的方法将会起作用,但我可以很容易地看到创建了多个MyGeneralAjaxCall。如果你能设法不创建5个或更多像那样的MyGeneralAjaxCall方法,我想你会做得很好,但它可能很快就会变得很糟糕。
https://stackoverflow.com/questions/8454073
复制相似问题