2015-01-05 4 views
-1

Как я могу вернуть обратный вызов из .fail() если возвращение DATATYPE не HTML?Как вернуть обратный вызов .fail(), если возвращаемый dataType не является html?

$.ajax({ 
    type:  "GET", 
    dataType: "html", 
    url:  "server.php", 
    async:  true, 

    beforeSend: function() { 
    }, 

    success: function (returndata) { 

    console.log(returndata); // I will get {"message":"something"} 

    } 

}).fail(function(jqXHR) { // this callback does not work 

    alert("error"); 

}); 

Например, в server.php,

header('Content-Type: application/json'); 
echo '{"message":"something"}'; 

я получу {"message":"something"} вместо error;

любые идеи?

редактировать:

$.ajax({ 
     type:  "GET", 
     dataType: "xml", 
     url:  "server.php", 
     async:  true, 

    beforeSend: function() { 
    }, 

    success: function (returndata) { 

     console.log(returndata); // I will get {"message":"something"} 

    } 

    }).fail(function(jqXHR) { // this callback does not work 

     alert("error"); 

    }); 

, если я изменю dataType: к «XML», он возвращает ошибку (что я хочу), когда ожидается XML - почему она не работает таким же образом для "html"?

+0

установить заголовок на сервере для типа содержимого. Если вы извлекаете JSON, почему вы устанавливаете dataType как html в первую очередь? – charlietfl

+0

спасибо, но мне нужно обработать его в jquery для того, что возвращается с сервера ... – laukok

+1

вам нужно установить что-то правильно, либо заголовок сервера, либо dataType. Если ваши ожидания не будут работать. Я не вижу, как вы будете делать запросы и не знаете тип данных, который будет ожидаться взамен, иначе как бы вы обрабатывали ответы? – charlietfl

ответ

-1

Проверьте, отвечает ли ваш сервер JSON как текстовое кодирование или приложение/JSON. Если это JSON, используйте метод error() вместо fail(). Он перейдет к методу ошибки, если тип содержимого не соответствует. Вот пример.

$.ajax({ 
    type: "GET", 
    dataType: "JSON", 
    url: "google.com", 
    async: true, 
    success: function(data) { 

    }, 
    error: function(err) { 
     console.log("Err", err) 
    } 
}); 

Выше кода будет работать с ошибкой и перейти к ошибке, если тип содержимого - html. Попробуйте это в своем сценарии.