Jquery Firefox断点更改提交
我有一个ajax调用,它设置了一个可以阻止提交的标志。 问题是,如果我在ifflag==1上设置断点并返回true语句并逐步遍历代码,它会在flag=1上重定向…但是如果我不这样做,它永远不会重定向。 发生什么事了Jquery Firefox断点更改提交,jquery,ajax,firefox,Jquery,Ajax,Firefox,我有一个ajax调用,它设置了一个可以阻止提交的标志。 问题是,如果我在ifflag==1上设置断点并返回true语句并逐步遍历代码,它会在flag=1上重定向…但是如果我不这样做,它永远不会重定向。 发生什么事了 $("#login").submit(function(e) { var flag = 2; var un = $('#username').val(); $.ajax( { type: "POST",
$("#login").submit(function(e) {
var flag = 2;
var un = $('#username').val();
$.ajax(
{
type: "POST",
url: "Utilities/CheckUsername.php",
data: "un="+ un,
success: function(data)
{
if(data=="Username Does Not Exist")
{
flag=1;
}
else
{
$('#mike').html(data);
flag=2;
}
}
});
if(flag==1)
{
return true;
}
else
{
e.preventDefault();
}
return false;
});
});
编辑:这仍然不起作用。为了澄清用户名是否不存在,我们将转到注册页面,它不会告诉他们用户名已被使用,并尝试另一个用户名
<script type="text/javascript">$(document).ready(function(){
$("#submitButton").click(function(e) {
var un = $('#username').val();
$.ajax(
{
type: "POST",
url: "Utilities/CheckUsername.php",
data: "un="+ un,
success: function(data)
{
if(data=="Username Does Not Exist")
{
$('#login').submit();
}
else
{
$('#mike').html(data);
}
}
});
});
});
</script>
</head>
<body>
<form name="login" id="login" method="post" action="dsds.html">
UserName<input type="text" name="username" id="username"value="">
<br/>
Password<input type="text" name="password" id="password" value="">
<br/>
Password Again<input type="text" name="passwordagain" id="passwordagain" value="">
<br/>
<input type="hidden" name="NewClass" id="NewClass" value="true">
<br/>
<input type="submit" name="submit" id="submitButton" value="submit">
</form>
<span id = "mike"></span>
您的问题是,您假设$.ajax是一个同步函数,而事实并非如此。它不会等到ajax调用完成后才进入下一条语句。这意味着,根据ajax调用的运行时,可能会设置或不设置标志变量。事实上,它几乎肯定不会被设置为2以外的任何值,因为ajax调用的往返时间将比JS执行器前进到if语句所需的时间长 当您在ifflag==1处设置断点时,执行将在此处停止,ajax调用还有时间完成,这就是为什么设置断点时它工作,而没有断点时它不工作的原因。我建议将您的代码修改为:
$("#loginButton").click(function(e) {
var un = $('#username').val();
$.ajax(
{
type: "POST",
url: "Utilities/CheckUsername.php",
data: "un="+ un,
success: function(data)
{
if(data=="Username Does Not Exist")
{
// code for handling an error;
}
else
{
$('#mike').html(data);
$('#loginForm').submit();
}
}
});
})
单击login按钮时,ajax调用将执行用户名检查,最后在检查正常时提交表单本身