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