Работа с ответами на запросы Ajax - PullRequest
0 голосов
/ 30 октября 2010

Я работаю над проектом, в котором мне нужно отправить ajax-запрос к некоторому промежуточному программному обеспечению на основе Java, за которое отвечает кто-то другой. 4 вещи могут произойти в ответ на данные, которые я отправил назад ...

  1. ИД пользователя верен, поэтому полученный ответ включает:

    XMLHttpRequest.responseText = "someurl.html"
    XMLHttpRequest.status = 200

  2. ИД пользователя верен, но человек не соответствует определенному статусу:

    XMLHttpRequest.responseText = "misstatusurl.html"
    XMLHttpRequest.status = 200

  3. ИД пользователя верен, но капча неверна, поэтому я получаю ответ:

    XMLHttpRequest.responseText = "Ошибка. Неправильная проверка."
    XMLHttpRequest.status = 200

  4. ИД пользователя неверен:

    XMLHttpRequest.responseText = "Ошибка. Не пользователь."
    XMLHttpRequest.status = 200

Итак, как вы видите, каждый ответ - 200 ОК. Это означает, что каждый запрос ajax обращается к моему «успешному» обратному вызову (я использую jQuery для этого бита, и он имеет встроенный обратный вызов success как часть его метода ajax), поэтому мне нужно основывать свою обработку обратного вызова на фактическом получить обратно. Правильный?

Либо это, либо мне нужно заставить посредника посылать назад коды состояния, которые лучше соответствуют фактическому состоянию запроса ... это звучит правильно?


Мой вопрос:

Каков наилучший способ продолжить здесь? Просто обработайте простой текст, который возвращается (предложения о том, как наилучшим образом это сделать, было бы наиболее ценно ... просто проанализируйте текст? Кажется, что-то негибкое ... что, если текст когда-нибудь изменится?) Или получите какой-то другой вид ответная реакция (предложения о том, что ему сказать, мне нужно больше всего ценить ... просто скажите, мне нужен какой-то заголовок, в котором указан код состояния ... может быть?). Как бы вы справились с этим?

1 Ответ

2 голосов
/ 30 октября 2010

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

Если бы вы отвечали за фактические возвращаемые страницы / данные, у вас было бы больше гибкости. Я обычно писал бы эту цель (конец, над которым у вас нет контроля) - всегда возвращать какой-то XML / JSON. Таким образом, если бы статус был 200, вы бы получили некоторые данные (независимо от ошибки в обработке, страницы не найдены или что-то). В этих данных я обычно добавляю тег (true или false) и тег с данными для любого сообщения об ошибке. Если бы не было ошибок, я бы потом вернул остальные данные.

Затем я использовал бы responseXML и перебрал бы узлы, проверил мои узлы состояния / ошибки и предупредил пользователя об ошибке (просто отобразив текст узла ошибки, который будет сообщением). В случае успеха я продолжу обработку оставшихся узлов в зависимости от того, как они мне нужны. Теперь было бы немного проще с поддержкой JSON и jQuery в методах ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...