15

我正在使用 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 不等于value。我知道确实如此,因为当我删除页面时,按预期return false;显示value 。另外,我以前使用过几乎相同的代码,它可以工作。有人可以给我一些建议吗?

4

6 回答 6

19

如何自己找到答案:

放置调试代码以查看您从服务器获得的内容。

$("#form").submit(function () {
        $.ajax({
            type: "POST",
            url: '/login/spam',
            data: formData,
            success: function (dataCheck) {
                console.log(dataCheck); // <==============================
                if (dataCheck == 'value') {
                     //Do stuff
                }
            }
        });
        return false;
    });

它的格式可能与您想象的不同。

于 2012-04-22T03:18:52.710 回答
2

如果您想阻止默认行为(在这种情况下是正常的表单提交),请使用preventDefault over return false;即使在上面 return false 语句的脚本中存在问题,preventDefault 也会起作用。

下面的代码应该可以正常工作。

$("#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 tab / fiddler 将帮助您了解您从服务器页面获得的响应。

于 2012-04-22T03:24:16.857 回答
0

真奇怪。我的建议是你可以在 firefox 或其他东西(例如 chrome 中的开发工具)中使用 firebug 来查看 xhr 响应。

而且我认为错误的结果可能是由错误类型的 xhr 响应(例如带有 html 标记的 '749afa42e6621f10bae17ee00cb1f4de' 信封)或未修剪的某些空间引起的。

可以帮助你:)

于 2012-04-22T03:25:59.273 回答
0

我知道可能已经晚了,但是我今天遇到了同样的问题,问题是正确的字符串返回成功,但是由于某种原因,它前面有一个额外的换行符。在本地这并没有发生,但是当我把它放到网上时,总是在返回的字符串中添加一个换行符(在你的情况下是 dataCheck)。我使用 substr() 函数在最后去掉了换行符,从那以后它工作得很好。

于 2013-09-11T11:56:43.510 回答
0

if(response.indexOf("success")!=-1){ } 试试这个方法 indexOf()

于 2013-10-16T06:53:53.487 回答
0

我想那dataCheck是一个String。然后使用localeCompare()

if (dataCheck.localeCompare('value') == 0) {
    //Do stuff
}
  • 如果 str1 在之前排序,则返回-1str2
  • 如果两个字符串相等则返回0
  • 如果排序后返回1str1str2
于 2014-05-21T12:26:39.597 回答