2014-05-06 2 views
0

Я пытаюсь вернуть полезное сообщение об ошибке моим запросам AJAX, которые я могу использовать на клиентской стороне для отображения пользователю.Верните описательное сообщение об ошибке с моей ошибкой HTTP 500 Internal Sever

Я делаю свои запросы, используя JQuery, как следующее:

$.ajax({ 
    url: 'myURL.php', 
    data: { id: someId }, 
    type: 'POST', 
    success: function(response) { 
     // do something with response 
    }, 
    error: function(jqXHR) { 
     // here is where I want to do something with jqXHR.responseText 
     // but how do I set that in PHP? 
    } 
}); 

И если какая-то ошибка в моем PHP скрипт, я использую следующий заголовок:

header("HTTP/1.1 500 Internal Server Error"); 

Так что мой вопрос , как включить в заголовок полезное сообщение об ошибке, которое будет помещено в атрибут responseText jqXHR, который затем я могу использовать в моем обратном вызове jQuery?

Любая помощь приветствуется.

+0

Почему вы возвращаете внутреннюю ошибку сервера? Вы можете просто отправить полезное сообщение об ошибке и обработать это в своей функции 'success'. – jeroen

+0

Вы можете сделать заголовок («HTTP/1.1 500 Некоторое полезное сообщение»); ' –

ответ

0

Обычно я создаю ответ JSON вместо xml, но идея должна быть одинаковой. Вместо того, чтобы возвращать ошибку сервера любого вида, вы можете создать свой ответ выключить массив, содержащий что-то вроде:

array('success'=>true); 

или

array('success'=>false, 'message'=>"Couldn't do it because ..blah.."); 

Затем, когда я обрабатывать JSON в success:

if(json['success']) { ... } //yay, it worked! reload the page or something 
else if(json['message']) alert(json['message']); 
else alert('Unknown error'); 

Это позволяет вашему контроллеру отправлять содержательные сообщения пользователю. Или вы можете добавить еще один массив, например ['error'], который вы можете проверить, используя консоль dev вашего браузера.

Ваш метод может отличаться, возвращая что-то, что может быть обработано jqXHR, но идея достаточно схожа.

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

  • Нет связанных вопросов^_^