2013-04-22 13 views
6

Szukam prostego przykładu i/lub wyjaśnienia, jak używać parametru error dla .ajax.Jak używać parametru błędu ajax Jquery

To pytanie (jQuery ajax error function) wskazuje na tę dokumentację jQuery (http://api.jquery.com/jQuery.ajax/), której nie rozumiem.

Mam następujący kod, który nie działa i nie mogę zrozumieć, dlaczego. Mam nadzieję, że parametr błędu pomoże:

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

Witam, czy nawet żądania POST dzieje się serwer? –

+0

Jeśli znasz narzędzia deweloperskie Chrome, sprawdź kartę Sieć, aby upewnić się, że otrzymałeś odpowiedź na żądanie – adamb

Odpowiedz

12

Błąd "własność" w $ .ajax obiektu parametru służy dostarczyć funkcję zwrotną znaną jako zamknięcie metody $ .ajax. Innymi słowy, musisz podać anonimową funkcję obsługi błędu, jeśli wystąpi podczas żądania ajax. Oto podstawowy przykład.

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

Należy pamiętać, że funkcja błędu zwrotna zostanie wywołany tylko wtedy, gdy żądanie faktycznie błędy out. Jeśli twój kod po prostu nie zwraca niczego, ale żądanie wciąż zwraca status 200, będziesz musiał obsłużyć ten wyjątek w funkcji zwrotnej sukcesu.

Mam nadzieję, że to pomoże.

EDYCJA: zauważ, że usunąłem użycie połączeń łańcuchowych, a teraz wszystkie funkcje wywołania zwrotnego są obsługiwane wewnątrz oryginalnego obiektu parametrów przekazanego do $ .ajax.

2

Wątpię, czy wysyłasz prośbę. Twoje białe spacje są wyłączone.

Javascript nie wymaga średników na końcu wyciągów. Z tego powodu czasami przybliża je tam, gdzie ich nie chcesz.

Spróbuj wstawić "({" w tym samym wierszu co "$ .ajax". Nie widzisz błędu, ponieważ go nie ma. $ .ajax to poprawna instrukcja, mimo że nie nic. Podobnie, obiekt utworzenie wewnątrz nawiasów jest ważny obiekt, mimo że nic nie robi tak dobrze.

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

Aby odpowiedzieć na oryginalne pytanie, błąd wykonuje funkcję jako parametr. Ta funkcja przyjmuje 3 parametry w tej kolejności:

  1. XHR (wniosek)
  2. status wniosku
  3. błąd, który został wyrzucony (może być niezdefiniowana)

Przykładem wygląda następująco:

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