在同一个ajax调用中有多个url?这可能吗?

时间:2013-08-07 07:56:33

标签: javascript ajax jquery

我可以使用ajax调用将数据发送到多个页面吗? 我不想为此使用另一个ajax调用。

示例代码:

 $.ajax({
     type: 'POST',
     url: '../services/form_data.php', //can I send data to multiple url with same ajax call.
     data: {
         answer_service: answer,
         expertise_service: expertise,
         email_service: email,
     },
     success: function (data) {
         $(".error_msg").text(data);
     }
 });

4 个答案:

答案 0 :(得分:15)

您不能对来自多个页面的1个请求使用相同的代码。

但你可以发送2个请求。它可以通过复制粘贴你的ajax代码或通过构建一个获取URL并使用此URL发送请求的函数来完成

function sendMyAjax(URL_address){
    $.ajax({
         type: 'POST',
         url: URL_address,
         data: {
             answer_service: answer,
             expertise_service: expertise,
             email_service: email,
         },
         success: function (data) {
             $(".error_msg").text(data);
         }
     });
};

答案 1 :(得分:11)

您需要的只是$.each$.ajax

的两个参数形式
var urls = ['/url/one','/url/two', ....];

$.each(urls, function(i,u){ 
     $.ajax(u, 
       { type: 'POST',
         data: {
            answer_service: answer,
            expertise_service: expertise,
            email_service: email,
         },
         success: function (data) {
             $(".error_msg").text(data);
         } 
       }
     );
});

注意:成功回调生成的消息将相互覆盖,如图所示。你可能想在成功函数中使用$('#someDiv')。append()或类似的东西。

答案 2 :(得分:3)

单个AJAX请求只能与一个URL通信,但您可以为不同的URL创建多个AJAX请求,并且它们将同时完成工作 - 在启动下一个URL之前,您无需等待一个完成

(如果您的网址位于同一台服务器上,您可以考虑重构服务器端代码,以便单个网址完成您的多个网址现在所做的所有工作。)

答案 3 :(得分:0)

使用'$ .when'也可以替代。我在我的一个项目中使用过它。

阅读jQuery API说明:

  

当两个ajax请求成功时执行函数myFunc,或者   myFailure,如果其中一个有错误。

$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) )
  .then( myFunc, myFailure );