2010-11-06 4 views
0

J'ai cet appel ajax au moment: « Est-ce que vous voulez dire »jQuery: ajax dans un autre? intelligent?

$.ajax({ 
    url: "misc/sendPM.php", 
    type: "POST", 
    data: data, 

    success: function(stuff) { 

     if (typeof stuff == "object") { 
      var err = confirm(stuff.error); 
      if (err) { 
       alert('You pressed OK'); // MAKE AJAX CALL HERE HERE HERE HERE 
      } else { 
       $("#pmResponse").text("Mottagare saknas!").show().fadeOut(4500); 
       $('#sendPM_btn').attr('disabled', false); 
       $('#txt').attr('readonly', false); 
       $('#title').attr('readonly', false); 
      } 
     } else { 

      $(stuff).prependTo('#PrivateMessages').fadeIn(1000); 
      $('#txt').val(""); 

      $("#pmResponse").text("Skickat!").show().fadeOut(4500); 
      $('#sendPM_btn').attr('disabled', false); 
      $('#txt').attr('readonly', false); 
      $('#title').attr('readonly', false); 
     } 
    } 
}); 

Je fais une Si l'utilisateur n'a pas entré le nom correct pour le destinataire. Le "vouliez-vous dire le nom" vient dans une confirmation, de sorte que vous pouvez appuyer sur OK ou Annuler -> pour taper à nouveau un nouveau nom.

Si vous appuyez sur OK maintenant, vous obtenez uniquement une alerte (voir le code ci-dessus). Mais ce que je veux faire quand vous appuyez sur OK, c'est modifier le nom de la donnée 'destinataire' et renvoyer les mêmes données. Est-ce possible? Comment?

Alors conclusion ce que je fais est maintenant.

Envoi demande à sendPM.php avec données, sendPM.php saisit les données et si il trouve le nom du destinataire est pas clair (par exemple Megan F) puis il renvoie JSON "erreur" avec: Vouliez-vous dire Megan Fox ?, le $ .ajax en cas de succès l'attrape, et le faire comme une boîte de confirmation. Si vous appuyez sur OK sur la boîte de confirmation (si vous avez signifie megan fox), puis il devrait envoyer retour « Megan Fox » à sendPM.php le long avec toutes les données précédentes, Afin de compléter le processus pleinement.

Y a-t-il une meilleure façon de procéder?

Si non, comment puis-je renvoyer "megan fox" à sendPM.php avec les données précédentes afin de terminer le processus complètement?

Répondre

1

Faites-les plutôt à la place.

function sendRequest(data) { 
    $.ajax({ 
     ... 
     data: data 
     success: process 
    }); 
} 

function process(stuff) { 
    ... 
    if(err && confirm("Did you mean " + stuff.suggestion + "?")) { 
     sendRequest([make your new data here]); 
    } 
    ...   
} 
Questions connexes