我的页面上有几个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调用。
感谢。
答案 0 :(得分:3)
您的方法将按预期工作。您传入的每个成功函数等将由每个关联的AJAX调用单独使用。 (所有参数都将保存在一起。)
答案 1 :(得分:0)
首先,ajax请求没有单一的全局回调集。每个ajax调用都会获得它自己的一组回调。
其次:$ .ajax({...}) 你的MyGeneralAjaxCall
...如果您认为需要一组默认选项,更好的方法是设置
var defaultoptions = { type: "POST", ...} //put default options, mimetypes, etc, here
(或返回的东西),然后在需要的地方执行:
var myajaxoptions = $.extend({},defaultoptions,myoverrides);
$.ajax(myajaxoptions);
这更具可扩展性。无需弥补“中间人”。您的方法可行,但我可以很容易地看到创建了多个MyGeneralAjaxCall
。如果你可以管理不创建5个或更多类似MyGeneralAjaxCall
的方法,我想你会做得很好,但它可能会很快变得讨厌。