2014-04-06 16 views
13

Sto utilizzando un post Ajax per inviare i dati del modulo al server, essere convalidato e quindi restituire un messaggio in base al fatto che i dati siano o meno validi e possano essere archiviati. La mia funzione di successo nel mio post ajax non funziona però. Ecco il post dell'ajax e la visualizzazione del messaggio di successo:Funzione successo Ajax

Nessun messaggio visualizzato sull'etichetta. Ho provato a impostare la variabile successmessage su un valore impostato nel codice e ha visualizzato bene, quindi ci deve essere qualcosa di sbagliato con la mia funzione di successo, non riesco a vedere cosa? Ho anche provato a impostare la richiamata di errore in questo modo:

error: function(data) {    
    successmessage = 'Error'; 
}, 

Ma ancora non viene visualizzato alcun messaggio.

+1

possibile duplicato di [Come restituire la risposta da una chiamata AJAX?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax- call) – Quentin

+0

"La mia funzione di successo nel mio post dell'ajax non funziona però" Quindi verifica la presenza di errori nella scheda di rete –

+0

Controllata la scheda di rete, il post viene pubblicato OK. – Mikey

risposta

18

È perché Ajax è asincrono, la funzione success o error verrà chiamata in seguito, quando il server risponde al client. Quindi, basta spostare le parti a seconda del risultato nella vostra funzione di successo del genere:

jQuery.ajax({ 

      type:"post", 
      dataType:"json", 
      url: myAjax.ajaxurl, 
      data: {action: 'submit_data', info: info}, 
      success: function(data) { 
       successmessage = 'Data was succesfully captured'; 
       $("label#successmessage").text(successmessage); 
      }, 
      error: function(data) { 
       successmessage = 'Error'; 
       $("label#successmessage").text(successmessage); 
      }, 
     }); 

     $(":input").val(''); 
     return false; 
0

La risposta di cui sopra non può risolvere il mio problem.So posso cambiare asincrona in falso per ottenere il messaggio di avviso.

jQuery.ajax({ 
      type:"post", 
      dataType:"json", 
      async: false, 
      url: myAjax.ajaxurl, 
      data: {action: 'submit_data', info: info}, 
      success: function(data) { 
       alert("Data was succesfully captured"); 
      }, 
     }); 
Problemi correlati