微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何在没有页面刷新的情况下发送表单数据?

我使用提交按钮在ajax中发送数据而没有任何页面刷新.
页面刷新了.

请检查我的代码并让我知道问题.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$("#idForm").submit(function() { alert("hi");

    var url = "ajax.PHP";
    $.ajax({
           type: "POST",
           url: url,
           data: $("#idForm").serialize(),
           success: function(data) {
               alert(data);
           }
         });

    return false;
});
</script>
<form id="idForm" method="post" enctype="multipart/form-data">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <input name="image" type="file" />
    <input type="submit" name="submit" value="Submit" />
</form>

ajax.PHP

echo "Hello";

解决方法:

js已经阻止了表单提交

问题中的代码已阻止表单通过此行提交:

return false;

这意味着:问题中的JavaScript代码根本没有运行.

表格尚不存在

这里的问题是当这行代码运行时:

$("#idForm")...

那个元素还没有在dom中.因此,提交处理程序没有附加到任何东西 – 当表单提交它时,它只是一个标准的HTTP post请求.

解决问题中的问题 – 请执行以下操作之一

在尝试操作元素之前,请确保该元素存在

如果脚本在元素出现在源代码中后运行 – 表单确实存在:

<form id="idForm">...
<script>
    $("#idForm")...
</script>

将jquery代码放在文档就绪处理程序中

如果js处于就绪处理程序中:

<script>
    $(function() {
        $("#idForm")...
    });
</script>
<form id="idForm">...

脚本标记的位置并不重要,因为dom在运行时已经完成加载.

将所有js放在页面的末尾

如果系统地将javascript放在页面的末尾:

<body>
    <form id="idForm">...
    ...
    <script src="//ajax.googleapis.c...
    <script>
        $("#idForm")...
    </script>
</body>

那将是established best practices之后,避免这样的问题,不需要在任何js代码中使用现成的处理程序(因为当脚本被解析时html源总是已经在dom中)并且具有被认为加载更快的页面.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐