为什么我会陷入这个AJAX提交循环?

时间:2010-01-14 19:22:42

标签: jquery ajax forms

我正在尝试使用jQuery表单插件在更改时动态提交表单。

它确实有效,但每次用户更改输入值时,它都会执行.post,运行我的成功“alert()”然后重复,一遍又一遍,直到我刷新页面以停止循环。这是代码:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>AJAX Form Test Suite</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script src="_scripts/jquery.form.js"></script>
<script>
    $(document).ready(function() {
    var options = { 
        success:       alertYes // post-submit callback 
    }; 

    // binding to each input's change event 
    $('#mainForm input').change(function() { 

        $(this).parent().ajaxSubmit(options); 

        return false; 
    });

    //success callback function
    function alertYes()  {      
        alert('You did it!'); 
    } 
});
</script>
</head>

<body>
<div id="ajaxMessage">
<h1>This is a suite AJAX form</h1>
<form id="mainForm" action="saveForm.php" method="post">
    <ul class="nolist">
    <li class="label"><label>Name</label></li>
    <li class="input"><input type="text" name="name" value="Eric Roberts" /></li>
    <li class="label"><label>Email</label></li>
    <li class="input"><input type="text" name="email" value="e-rob@tvgods.com" /></li>
    <li class="label"><input type="submit" name="submit" value="DO IT" /></li>
    </ul>
</form>
</div>
</body>
</html>

我做错了让它不断循环?我假设当.post返回时,在警报之后,它会再次模糊输入并重复提交ajax调用,但我不知道为什么会这样做?

感谢。

2 个答案:

答案 0 :(得分:4)

我相信你的alert()调用会导致表单的blur()事件触发,从而重新提交表单。


<强>更新

如果您使用的是Firebug,则可以使用以下javascript:

console.debug('my message goes here');

向Firebug控制台发送消息。我通常将它包装在这样的调用中:

function status(msg)
{
  if(console)
    console.debug('# '+msg);
  }
}

然后在我的javascript中调用状态('我的消息在这里......')以发出我需要的任何调试/跟踪消息。通过将其包装在我上面所做的功能中,您确保在未定义控制台对象的浏览器(IE或任何未安装Firebug的浏览器)中运行时代码仍然有效。 / p>

答案 1 :(得分:1)

我有没有机会说服你绑定到输入上的.change事件呢?这可能会解决这个问题,你会避免很多不必要的提交。现在如果有人在表格中输入然后从表格中删除(不更改任何内容),它将提交,这是一个毫无意义的提交。 .Change可能更接近你想要做的事情。