2014-07-22 3 views
0

Попытка понять ajax ....Какой смысл обработчика успеха ajax?

В моем вызове ajax у меня есть обработчик успеха. У меня также есть целевой URL, который ajax бросает данные (лучший способ я могу описать его).

  • Если мой целевой URL действителен - успех.
  • Если мой целевой URL-адрес с ошибкой - успех.
  • Если мой целевой URL - это мусор - успех.

Итак ... какая цель служит?

// 1. Put a trigger on the right button 
$("#submitButton").click(function(){ 
    alert("trigger event"); 

// 2. serialise the form data 
    var formData = $("#myForm").serializeArray(); 

// 3. make an ajax call to the controller 

    $.ajax({ 
     type: "POST", 
     url: "controllerThatDoesntExist/function", 
     data: formData, 
     success: successHandler, 
     dataType: "text" 
     }); 

}); 

function successHandler(data, textStatus, jqXHR) 
    { 
     alert("Success is 100% guaranteed"); 
    }; 
+0

Функция, которая вызывается, если запрос выполнен успешно. http://api.jquery.com/jquery.ajax/ –

+0

Последние два момента не будут работать, если это так, можете ли вы создать тестовый пример? Если есть такие случаи, то для устранения причины ошибки следует использовать обратный вызов ошибки. – Jai

+0

@Suraj - Так как запрос выполняется в 100% случаев, функция всегда вызывается ... кажется немного бессмысленной. – Maxcot

ответ

3

Если вы видите, функция success дозвонились за ресурсы, которые не существуют, то это означает, что сервер ресурсы загружаются из посылает неверный ответ, который использует код статуса HTTP 200, а не один из серии 4xx. Проблема заключается в том, что сервер, а не функция jQuery ajax.

Если сервер делает то, что он должен делать с недействительными адресами, ajax не будет вызывать success и будет называть error вместо (и аналогичных функций в новом Promise вещи).

Вот успешный запрос: http://jsfiddle.net/5F7NV/

// Successful request 
var xhr = $.ajax({ 
    url: "/", 
    success: function(html) { 
     console.log("Success, got back " + html.length + " characters of HTML"); 
    }, 
    error: function(jqXHR) { 
     console.log("Error, status code: " + jqXHR.status); 
    } 
}); 

А вот неудачная запрос: http://jsfiddle.net/5F7NV/1

// Request for something that doesn't exist 
$.ajax({ 
    url: "/blargleflap", 
    success: function(html) { 
     console.log("Success"); 
    }, 
    error: function(jqXHR) { 
     console.log("Error, status code: " + jqXHR.status); 
    } 
}); 
+1

Я сижу здесь, смеясь ... Я изучаю аякс весь день, я не ближе к пониманию того, как это работает, но это так. У меня есть frameworkignign MVC framework, работающий на локальном сервере Apache XAMPP. Я делаю призыв ajax к URL-адресу, который является полностью фиктивным, и я получаю положительный ответ. каждый. черт. время. Думаю, время спать. – Maxcot

+0

@maxcot Можете поделиться своим кодом? –

+0

@Maxcot: Потому что, очевидно, ваш сервер отправляет ответ 200. Каждый. Время. (Пожалуйста, не ругайтесь на SO.) –

Смежные вопросы