15

我可以使用 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

4 回答 4

18

您不能对来自多个页面的 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);
         }
     });
};
于 2013-08-07T08:01:04.530 回答
15

您只需要$.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() 或类似的东西。

于 2013-08-07T08:05:13.670 回答
4

单个 AJAX 请求只能与一个 URL 通信,但您可以为不同的 URL 创建多个 AJAX 请求,它们将同时完成工作 - 您无需等待一个完成后再触发下一个。

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

于 2013-08-07T08:00:19.640 回答
0

使用 '$.when' 也可以是另一种选择。我在我的一个项目中使用过它。

阅读 jQuery API 说明:

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

$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) )
  .then( myFunc, myFailure );
于 2018-04-13T11:47:58.717 回答