我正在使用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 ,正如预期的那样。此外,我之前使用过几乎完全相同的代码,这有效。有人可以给我一些建议吗?
答案 0 :(得分: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;
});
它可能是你想到的其他格式。
答案 1 :(得分:2)
如果您想阻止默认行为(在这种情况下是普通表单提交),请使用preventDefault而不是return false
;即使脚本中存在问题,在上面返回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将帮助您了解从服务器页面获得的响应。
答案 2 :(得分:0)
很奇怪。我的建议是你可以在firefox或其他东西中使用firebug(例如在chrome中开发工具)来查看xhr响应。
我认为错误的类型xhr响应可能导致错误的结果(例如'749afa42e6621f10bae17ee00cb1f4de'信封带有html标签)或某些空间未被激活。
可以帮助你:)
答案 3 :(得分:0)
我知道它可能会迟到但是我今天遇到了同样的问题,问题是正确的字符串已经恢复成功,但是由于某种原因它在它前面有一个额外的换行符。本地这种情况并没有发生,但是当我把它上线时,新行总是被添加到返回的字符串中(在你的情况下是dataCheck)。我使用了substr()函数来删除最后的换行符,并且从那里开始工作正常。
答案 4 :(得分:0)
if(response.indexOf(“success”)!= - 1){}试试这个方法indexOf()
答案 5 :(得分:0)
我猜dataCheck
是字符串。然后使用localeCompare()
if (dataCheck.localeCompare('value') == 0) {
//Do stuff
}
str2
str1
str2
,则返回 1