2013-04-22 15 views
6

Sto cercando un semplice esempio e/o spiegazione su come utilizzare il parametro error per .ajax.Come utilizzare il parametro di errore jquery ajax

Questa domanda (jQuery ajax error function) punta a questa documentazione jQuery (http://api.jquery.com/jQuery.ajax/) che non capisco.

Ho il seguente codice che non funziona e non riesco a capire perché. Sto sperando che il parametro di errore aiuterà:

jquery:

<script> 
    // wait for the DOM to be loaded 
    $(document).ready(function() { 
     // bind 'myForm' and provide a simple callback function 
     $("#myForm").submit(function(){ 
       var user_input = $("#signup_id_email").val(); 
       $.ajax 
       ({ 
         type: "POST", 
         url: "ajax_test.php", 
         dataType: 'json', 
         data: {email: user_input}, 
         **error: ""** 
       }) 
       .done(function(r) 
       { 
        $("#answer_id").append(r.email); 
       }); 
      }); 
    }); 
</script> 

PHP (ajax_text.php)

<?php 
echo json_encode($_POST); 
?> 
+0

Ciao, hai nemmeno bisogno di una richiesta POST andare a il server? –

+0

Se hai familiarità con Chrome Dev Tools, controlla nella scheda Rete per assicurarti di aver ricevuto una risposta dalla tua richiesta – adamb

risposta

12

L'errore "proprietà" dell'oggetto parametro $ .ajax è usato per fornire una funzione di callback nota come chiusura al metodo $ .ajax. In altre parole, è necessario fornire una funzione anonima per gestire un errore se si verifica durante la richiesta Ajax. Ecco un esempio di base.

$.ajax({ 
     type: "POST", 
     url: "ajax_test.php", 
     dataType: 'application/json', 
     data: {email: user_input}, 
     success: function(result) { 
       // You can use success instead of .done 
     }, 
     error: function(requestObject, error, errorThrown) { 
      alert(error); 
      alert(errorThrown); 
     } 
    }); 

Ricordare che la funzione di callback degli errori verrà invocata solo se la richiesta si verifica effettivamente. Se il tuo codice semplicemente non restituisce nulla, ma la richiesta restituisce comunque uno stato di 200, dovrai gestire tale eccezione nella funzione di callback di successo.

Spero che questo aiuti.

EDIT: si noti che ho rimosso l'uso degli eventi concatenamento e ora tutte le funzioni di callback sono gestite all'interno dei parametri originali oggetto passato in $ .ajax.

2

Dubito che tu stia inviando una richiesta. Il tuo spazio vuoto è spento.

Javascript non richiede il punto e virgola alla fine delle istruzioni. Per questo motivo, a volte li infesta dove non li vuoi.

Prova a mettere il '({' sulla stessa riga del '$ .ajax'. Non hai visto l'errore perché non ce n'è uno. $ .ajax è un'istruzione valida, anche se lo fa nulla. Allo stesso modo, l'oggetto che si creano all'interno delle parentesi è un oggetto valido, anche se non si fa nulla pure.

$.ajax({ 
    type: "POST", 
    ... 
}).done(function(r) { 
    .... 
}); 

Per rispondere alla tua domanda iniziale, l'errore assume una funzione come parametro. Questa funzione prende 3 parametri in questo ordine:

  1. il XHR (richiesta)
  2. lo stato della richiesta
  3. l'errore che è stato gettato (può essere definito)

Un esempio simile a questo:

$.ajax({ 
    ... 
    error: function(xhr, status, error) { 
     alert("oh no!"); 
    } 
}) 
Problemi correlati