При использовании $ .ajax в jQuery, как я могу сознательно выдать ошибку в загруженном документе? - PullRequest
14 голосов
/ 06 февраля 2010

В моем документе у меня есть этот скрипт:

$.ajax({ type:"POST",url:"ajax.php",data:data,
    success: function() { 
        //onsuccess
    },
    error: function() { 
        //onerror
    }
}); 

Как я могу в документе ajax.php преднамеренно выдать ошибку? Достаточно ли просто скинуть код состояния HTTP 400 или что-то? (А если так, то 400 ли это правильно?)

Почему я спрашиваю, что я хочу использовать это для отправки формы на сервер, и если поле не заполнено должным образом, я хочу предупредить пользователя с помощью параметра ошибки в $.ajax. Я знаю, что мог бы сделать это с помощью javascript, но я надеюсь, что смогу сделать это таким образом (поэтому мне не нужно писать подтверждение два раза). Но, конечно, делая это таким образом, я не могу отделить разные поля от других.

Исходя из того, для чего я хочу его использовать, могу ли я каким-либо образом выдать "пользовательскую ошибку" , поэтому, если поле name не заполнено должным образом, возвращается имя поле (т.е. name). Достаточно ли сделать что-то вроде этого:

В ajax.php:

if (isFilledOutProperly($name) == false) {
    echo "name";
}
else {
    echo "success";
}

А:

success: function(data) { 
    if (data == 'name') {
        //error
    }
            else {
        //success
    }
},

Возможно, я здесь не на том пути, но если у кого-то есть лучшее предложение о том, как я могу это сделать, пожалуйста, сообщите мне. Спасибо!

1 Ответ

12 голосов
/ 06 февраля 2010

Предложение error из $.ajax() звонков не соответствует обстоятельствам, на которые вы ссылаетесь.error охватывает случаи, скажем, ошибок HTTP.В этом случае ошибки валидации не являются ошибками.Вам лучше указывать в обратном вызове success соответствующие данные, возвращаемые с сервера.

Если вы посмотрите документацию :

error(XMLHttpRequest, textStatus, errorThrown)Function

Функция, вызываемая в случае сбоя запроса.Функции передаются три аргумента: объект XMLHttpRequest, строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел.Возможные значения для второго аргумента (кроме нуля): «timeout», «error», «notmodified» и «parsererror».Это Ajax Event .

Примечание: условия ошибок, о которых говорится, - это ошибки синтаксического анализа, тайм-ауты, ошибки (HTTP) и не измененныеэто еще один ответ HTTP).

Технически ваш запрос выполняется успешно, но проверка не проходит, что само по себе не является ошибкой.

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