ajax-запрос в extjs всегда выполняется успешно - PullRequest
1 голос
/ 22 февраля 2011

У меня есть запрос ajax, где у меня есть код как для успеха, так и для отказа

success: function(my_response) {
},
failure: function(my_response) {
}

Я использую Perl CGI на сервере для обработки запроса Ajax, он выводит строку ниже, когда происходит сбой

print "Content-type: text/plain\n\n";
print "{success: false, errors: {response: 'Query Failed -- Please check the syntax'}}";
exit

В Firebug я вижу ответ выше.Но мой браузер всегда успешно выполняет код.Что-то не так в том, как я обрабатываю запрос ajax?

1 Ответ

4 голосов
/ 22 февраля 2011

Вы отправляете сообщение JSON с кодом состояния 200, которое считается успешным. Тот факт, что это сообщение JSON содержит некоторую пользовательскую структуру с сообщением об ошибке, не является тем, что extjs способен знать. Вы можете отправить код состояния HTTP 500 с вашего сервера или просто использовать условие if в вашем обработчике успеха, например так:

success: function(my_response) {
   if (my_response.success) {
       alert('it worked!');
   } else {
       alert('oops, something went wrong: ' + my_response.errors.response);
   }
}

Также перечитайте тип контента к тому, что вы фактически отправляете:

print "Content-Type: application/json\n\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...