JQuery проверяет успешность поста Ajax - PullRequest
61 голосов
/ 17 февраля 2009

как определить функцию успеха и неудачи ajax $ .post?

Ответы [ 5 ]

111 голосов
/ 17 февраля 2009

Документация здесь: http://docs.jquery.com/Ajax/jQuery.ajax

Но, резюмируя, вызов ajax принимает несколько вариантов. те, кого вы ищете, - это ошибки и успех.

Вы бы назвали это так:

$.ajax({
  url: 'mypage.html',
  success: function(){
    alert('success');
  },
  error: function(){
    alert('failure');
  }
});

Я показал, что функция успеха и ошибки не принимает аргументов, но они могут получать аргументы.

Функция ошибки может принимать три аргумента: XMLHttpRequest, textStatus и errorThrown.

Функция успеха может принимать два аргумента: data и textStatus. Запрошенная вами страница будет в аргументе data.

45 голосов
/ 17 февраля 2009

Если вам нужна функция сбоя, вы не можете использовать функции $ .get или $ .post; вам нужно будет вызвать функцию $ .ajax напрямую. Вы передаете объект параметров, который может иметь обратные вызовы «success» и «error».

Вместо этого:

$.post("/post/url.php", parameters, successFunction);

вы бы использовали это:

$.ajax({
    url: "/post/url.php",
    type: "POST",
    data: parameters,
    success: successFunction,
    error: errorFunction
});

Также доступно множество других опций. В документации перечислены все доступные опции.

31 голосов
/ 20 июля 2012

с использованием jQuery 1.8 и выше, следует использовать следующее:

var request = $.ajax({
    type: 'POST',
    url: 'mmm.php',
    data: { abc: "abcdefghijklmnopqrstuvwxyz" } })
    .done(function(data) { alert("success"+data.slice(0, 100)); })
    .fail(function() { alert("error"); })
    .always(function() { alert("complete"); });

проверить документы как указано @hitautodestruct.

2 голосов
/ 05 мая 2012

Мне было интересно, почему они не предоставили в самом jquery, поэтому я сделал несколько изменений в файле jquery ,,, вот блок измененного кода:

оригинальный кодовый блок:

    post: function( url, data, callback, type ) {
    // shift arguments if data argument was omited
    if ( jQuery.isFunction( data ) ) {
        type = type || callback;
        callback = data;
        data = {};
    }

    return jQuery.ajax({
        type: "POST",
        url: url,
        data: data,
        success: callback,
        dataType: type
    });  

Блок измененных кодов:

        post: function (url, data, callback, failcallback, type) {
        if (type === undefined || type === null) {
            if (!jQuery.isFunction(failcallback)) { 
            type=failcallback
        }
        else if (!jQuery.isFunction(callback)) {
            type = callback
        }
        }
        if (jQuery.isFunction(data) && jQuery.isFunction(callback)) {
            failcallback = callback;

        }
        // shift arguments if data argument was omited
        if (jQuery.isFunction(data)) {
            type = type || callback;
            callback = data;
            data = {};

        }


        return jQuery.ajax({
            type: "POST",
            url: url,
            data: data,
            success: callback,
            error:failcallback,
            dataType: type
        });
    },

Это должно помочь тому, кто пытается поймать ошибку на $ .Post в jquery.

Обновлено: Или есть другой способ сделать это:

   $.post(url,{},function(res){
        //To do write if call is successful
   }).error(function(p1,p2,p3){
             //To do Write if call is failed
          });
0 голосов
/ 26 августа 2016

Этот стиль также возможен:

$.get("mypage.html")
    .done(function(result){
        alert("done. read "+result.length+" characters.");
    })
    .fail(function(jqXHR, textStatus, errorThrown){
        alert("fail. status: "+textStatus);
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...