jquery ajax 返回地址栏中的查询字符串

jquery ajax returning query string in address bar

本文关键字:查询 字符串 地址栏 ajax 返回 jquery      更新时间:2023-09-26

我正在处理一个简单的 ajax 邮件,我的 html 看起来像这样:

<form id="contact_form">
        <input name="name" id="name" placeholder="[ NAME ]" type="text"> <br />
        <input name="company" id="company" placeholder="[ COMPANY ]" type="text"> <br />
        <input name="designation" id="designation" placeholder="[ DESIGNATION ]" type="text"> <br />
        <input name="phone" id="phone" placeholder="[ PHONE ]" type="text"> <br />
        <input name="email" id="email" placeholder="[ EMAIL ]" type="text"> <br />
        <textarea name="message" id="message" rows="4" cols="50" style="color:#FFF;" Placeholder="[ HOW CAN WE HELP? ]"></textarea><br />
        <input type="submit" id="submit_btn" value="Submit" style="width:262px; height:30px;"> 
        <div id="result" style="background-color:#7A706B; color:#FFF; text-align:center; width:280px; height:250px; position:absolute; left:10px; top:30px; padding-top:100px; display:none; font-size:16px;"> You Expressed. We Understand.<br /><br />[Welcome to the world of business innovation]<br /><br />You’ll be clarified shortly…</div>
        </form>

我的jquery看起来像这样:

$(function() {
$("#submit_btn").click(function(){
var data = {
    name: $("#name").val(),
    company: $("#company").val(),
    designation: $("#designation").val(),
    phone: $("#phone").val(),
    email: $("#email").val(),
    message: $("#message").val()
};
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "mail.php",
data: data,
cache: false,
success: function(result){ 
  $( "#result" ).fadeIn(1000);
}
});
});
});

问题是当我单击"提交"按钮时,它会在地址栏中显示所有数据.php而不是通过POST方法将其发送到邮件。

PS:当我使用 alert() 而不是 $( "#result" ).fadeIn(1000) 时;它工作正常。

有人可以帮忙吗?谢谢。

您需要取消提交并使用提交事件而不是单击

$(function() {
  $("#contact_form").on("submit",function(e){
    e.preventDefault(); // will cancel the submit even if errors below
    // rest of code
  });
});

评论者注意:

提交按钮的有效用例是按 Enter 将触发提交处理程序。这通常是有用的。如果您不希望 enter 提交,那么确实使按钮 type=button 并将 ajax 处理程序分配给单击此按钮而不是提交。

添加 e.preventDefault(); 到您的点击回调:

$("#submit_btn").click(function() {
    e.preventDefault();
    // ...
});

尝试输入绝对 URL 而不是 url: "mail.php" . 并在click(function(){});回调结束时return false;

三分

  • 您必须通过event.preventDefault()阻止默认操作
  • 侦听提交事件而不是单击事件
  • 使用.serialize()方法收集数据
第一点是

代码工作所必需的;另外两点是建议。

$(function() {
    $("#contact_form").on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "mail.php",
            data: $(this).serialize(),
            cache: false,
            success: function(result){ 
                $( "#result" ).fadeIn(1000);
            }
        });
    });
});

奖金

只是为了让您了解GET(默认)和POST之间的区别,如果您只在 HTML 中进行以下更改,您将不会在地址栏中看到数据。然而,您的表单仍然不会通过 ajax 提交,因为默认操作仍然有效。

<form id="contact_form" method="post">