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