首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整合$.ajax

整合$.ajax
EN

Stack Overflow用户
提问于 2011-12-10 11:07:48
回答 2查看 123关注 0票数 1

我的页面上有几个ajax调用,我想将它们合并到一个函数中。

现在,我在几个地方使用了这种类型的函数:

代码语言:javascript
复制
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调用,如下所示:

代码语言:javascript
复制
function MyGeneralAjaxCall(TheData, TheURL, TheSuccessFunction, TheErrorFunction) {
  $.ajax({ .... });
}

我的问题是:如果我这样做了,并且用户几乎同时发送了两个ajax调用,直到在第一个调用的返回数据返回之前进行了第二个ajax调用,那么成功或错误函数是否会触发正确的调用。我担心,如果用户在第一个调用返回之前触发了第二个调用,那么将执行的成功函数将不是用于正确的ajax调用。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-10 11:15:23

您的方法将如您所期望的那样工作。您传入的每个成功函数等都将被每个关联的AJAX调用单独使用。(您的所有参数将保留在一起。)

票数 3
EN

Stack Overflow用户

发布于 2011-12-10 11:34:00

首先,ajax请求没有单一的全局回调集。每个ajax调用都有自己的一组回调函数。

第二:$.ajax({...})是你的MyGeneralAjaxCall...如果您认为需要一组默认选项,则更好的方法是设置

代码语言:javascript
复制
var  defaultoptions = { type: "POST", ...}  //put default options, mimetypes, etc, here 

(或者返回它的东西),然后在需要的地方做:

代码语言:javascript
复制
var myajaxoptions = $.extend({},defaultoptions,myoverrides); 
$.ajax(myajaxoptions);

这更具可扩展性。不需要编造“男人在中间”。您的方法将会起作用,但我可以很容易地看到创建了多个MyGeneralAjaxCall。如果你能设法不创建5个或更多像那样的MyGeneralAjaxCall方法,我想你会做得很好,但它可能很快就会变得很糟糕。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8454073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档