JQuery Успех AJAX
Я использую функцию jQuery $.ajax
для отправки формы, которая работает, но успех - это то, где у меня возникают проблемы. Вот мой код:
$("#form").submit(function () {
$.ajax({
type: "POST",
url: '/login/spam',
data: formData,
success: function (dataCheck) {
if (dataCheck == 'value') {
//Do stuff
}
}
});
return false;
});
Проблема, с которой я столкнулась, - это функция if
, которая говорит, что dataCheck не равна значению. Я знаю, что это происходит, потому что, когда я удаляю return false;
, страница отображает значение, как и ожидалось. Кроме того, раньше я использовал почти идентичный код, который работает. Может ли кто-нибудь дать мне совет?
Ответы
Ответ 1
Как найти ответ самостоятельно:
Поместите код отладки, чтобы узнать, что вы получаете с сервера.
$("#form").submit(function () {
$.ajax({
type: "POST",
url: '/login/spam',
data: formData,
success: function (dataCheck) {
console.log(dataCheck); // <==============================
if (dataCheck == 'value') {
//Do stuff
}
}
});
return false;
});
Вероятно, это будет в другом формате, чем вы думаете.
Ответ 2
Если вы хотите предотвратить поведение по умолчанию (в этом случае отправить нормальную форму), используйте preventDefault над return false
; preventDefault будет работать, даже если есть проблема в script, которая выше возвращает ложную инструкцию.
Следующий код должен работать нормально.
$("#form").submit(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: '/login/spam',
data: formData,
success: function (dataCheck) {
if (dataCheck == 'value') {
//Do stuff
}
}
});
});
Как упоминалось gdoron, используйте console.debug/alert, чтобы узнать, какое значение находится в переменных. Использование вкладки "Firebug Net" /скрипача поможет вам понять, какой ответ вы получаете со страницы сервера.
Ответ 3
Это странно. Мой совет: вы можете использовать firebug в firefox или что-то еще (например, разработать инструменты в хроме), чтобы увидеть ответ xhr.
И я думаю, что, возможно, неправильный результат вызван неправильным ответом типа xhr (например, "749afa42e6621f10bae17ee00cb1f4de" с тэгом html) или некоторым пространством, не обрезанным.
Помогите вам:)
Ответ 4
Я знаю, что может быть поздно, но у меня была такая же проблема сегодня, и проблема в том, что правильная строка была возвращена к успеху, но по какой-то причине у нее был дополнительный символ новой строки перед ней. Однако локально этого не произошло, когда я открывал его в Интернете, новая строка всегда добавлялась к возвращаемой строке (в вашем случае dataCheck). Я использовал функцию substr(), чтобы избавиться от новой строки в конце, и она отлично работала там.
Ответ 5
if (response.indexOf( "success" )!= - 1) {} Попробуйте этот метод indexOf()
Ответ 6
Я предполагаю, что dataCheck
является Строкой. Затем используйте localeCompare()
if (dataCheck.localeCompare('value') == 0) {
//Do stuff
}
- Возвращает -1, если str1 сортируется до
str2
- Возвращает 0, если две строки равны
- Возвращает 1, если
str1
сортируется после str2