发布没有立即发送ajax

时间:2013-12-08 10:48:20

标签: javascript ajax forms jquery

<script src="http://www.ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js></script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<form>
<label>Campo</label>
<input id="campo" name="campo" placeholder="Campo" required="" type="text">
</form>  

<script language="JavaScript" type="text/javascript">
        $(document).ready(function() {
            $.ajax({
            url: "control.php",
            type: "POST",
            data: "campo=" + $("input#campo").val(),
            success : function(data) {
                if (data == 1) {
                    $("#div").html("Campo non disponibile");
                }
                else {
                    $("#div").html("Campo disponibile :)");
                }
            }
            });
        });
</script>

我在Firebug中看到POST包含输入字段的值只发送更新页面而不是立即发送。为什么呢?

1 个答案:

答案 0 :(得分:0)

您没有为表单提交注册正确的点击/提交处理程序。相反,您只能在文档就绪时调用$.ajax。这就是为什么你只看到页面加载的提交(或更准确,文档就绪)。

您需要收听提交事件,因此请将代码更改为以下内容

$(document).on("submit", "form", function(e) {
    e.preventDefault();
    $.ajax({
    …
    });
});

如果您的javascript位于页面的末尾,则无需等待文档准备就绪(此时它始终就绪)。我注意到你包含jQuery的v1.9和v.1.10,这通常不需要也不可取。