web-dev-qa-db-fra.com

Plusieurs URL dans le même appel ajax? Est-ce possible?

Puis-je envoyer mes données sur plusieurs pages en utilisant un appel ajax? Je ne veux pas utiliser un autre appel ajax pour cela.

Exemple de code:

 $.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);
     }
 });
10
JETHALAL

Vous ne pouvez pas utiliser le même code pour une requête de plusieurs pages.

MAIS vous pouvez envoyer 2 demandes. cela peut être fait en copiant/collant votre code ajax ou en construisant une fonction qui obtient l'URL et envoie une requête avec cette 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);
         }
     });
};
15
Or Duan

Tout ce dont vous avez besoin est $ .each et la forme à deux paramètres de $ .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);
         } 
       }
     );
});

Remarque: Les messages générés par le rappel de réussite se écraseront comme indiqué. Vous voudrez probablement utiliser $ ('# someDiv'). Append () ou similaire dans la fonction success.

10
Paul

Une seule demande AJAX ne peut parler qu'à une seule URL, mais vous pouvez créer plusieurs demandes AJAX pour différentes URL. Elles feront leur travail simultanément. Vous n'avez pas besoin d'attendre. un à terminer avant de tirer le prochain.

(Si vos URL sont sur le même serveur, vous pouvez envisager de refactoriser votre code côté serveur afin qu'une seule URL effectue tout le travail que vos multiples URL effectuent maintenant.)

3
RichieHindle

L'utilisation de '$ .when' pourrait également constituer une alternative. Je l'ai utilisé dans l'un de mes projets.

Lecture des instructions de l'API jQuery:

Exécutez la fonction myFunc lorsque les deux demandes ajax aboutissent ou MyFailure si l’une ou l’autre a une erreur.

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