我有以下代码:
function check_email() {
var email = $('#email').val();
$.post(
"inc/check.php",
{ email: email },
function(result) {
if (result == 0) {
// Do Stuff
}
else {
// Do Stuff
}
}
);
}
在开发环境中的浏览器中,这个测试很好。但是在具有相同浏览器的其他环境中,请求似乎没有触发。我通过以下方式对此进行了测试:
function check_email() {
alert('test1');
var email = $('#email').val();
$.post(
"inc/check.php",
{ email: email },
function(result) {
alert('test2');
if (result == 0) {
// Do Stuff
}
else {
// Do Stuff
}
}
);
}
第一个test1
警报会触发,但第二个警告test2
则不会触发。请记住,这只适用于某些环境。有人有任何想法吗?
答案 0 :(得分:3)
第一个test1警报触发但第二个警告test2没有触发。请记住,这只适用于某些环境。有人有任何想法吗?
因为在不起作用的环境中出现了问题,因此success
处理程序不会被调用。
您可以通过
找出 出错的地方查看浏览器的开发工具,特别是网络标签,
使用error
处理程序并检查它为您提供的信息。
选项#2需要使用$.post
重写$.ajax
(它只是$.ajax
的快捷方式/包装),如下所示:
$.ajax({
type: 'POST',
url: "inc/check.php",
data: {email: email},
success: function(result) {
alert('test2');
if (result == 0) {
// Do Stuff
}
else {
// Do Stuff
}
},
error: function(jqXHR, status, errThrown) {
// Look at what went wrong here
}
});
作为旁注,alert
- 样式调试效率非常低,并且在2013年不需要它。而是使用浏览器内置的调试器。设置断点并逐步执行代码。所有主流浏览器都内置了调试器,包括IE8及更高版本。 Firefox的内置版本仍然相当基础,但还有Firebug插件。 Chrome内置的工具非常出色,但同样,它们都或多或少地具有它们。如果您绝对必须在IE7或IE6上调试某些内容,甚至还有Visual Studio。