【问题标题】:Add url parameter via jquery and ajax通过 jquery 和 ajax 添加 url 参数
【发布时间】:2019-09-09 18:48:08
【问题描述】:

我有一个表单,在提交时我想将电子邮件地址值作为参数传递给 url。如何将其合并到下面的当前设置中:

<form action="/event/" method="POST" id="signupForm">

这是我的

$("#signupForm").submit(function(e) {
    e.preventDefault();
    var form = $(this);
    var email = $("#EmailAddress").val();

    $.ajax({
           type: "POST",
           url: form.attr('action'),
           data: form.serialize(),
           success: function(data)
           {
               console.log(data); //data contain response from your php script
               register_signup();
               form.replaceWith("<br /><p>Thanks for signing up!</p>");
           }
         });

});

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    您可以将其附加到网址:

    $("#signupForm").submit(function(e) {
        e.preventDefault();
        var form = $(this);
        var email = $("#EmailAddress").val();
    
        $.ajax({
               type: "POST",
               url: form.attr('action') + '?email=' + email,
               data: form.serialize(),
               success: function(data)
               {
                   console.log(data); //data contain response from your php script
                   register_signup();
                   form.replaceWith("<br /><p>Thanks for signing up!</p>");
               }
             });
    });
    

    在服务器中,您需要从查询字符串中检索 URL 中参数的数据,并从 POST 中检索从表单发布的数据:

    parse_str($_SERVER['QUERY_STRING'], $query);
    echo $query['email'];
    

    对于帖子值,只需使用$_POST['input_name']

    【讨论】:

    • 非常感谢,不确定语法。如果我理解正确,因为它是 ajax,所以页面不会重新加载,所以参数不会显示在 url 中,对吗?我正在尝试调用一个 php 文件,然后将其拉入参数,但似乎没有将其拉入。
    • 查看编辑,希望对您有所帮助。您不妨将电子邮件作为帖子值包含在表单中,而不是将其添加到 URL 中,不是吗?如果您不希望用户看到它,只需将其添加为隐藏字段。
    【解决方案2】:

    作为替代方案,您可以在表单中添加一个带有隐藏标志的输入字段,并在序列化之前将其值设置为电子邮件地址。

    【讨论】:

      【解决方案3】:

      不要使用url: form.attr('action'),而是使用它

      url: "/event/?email="+email
      

      url: form.attr('action') + '?email=' + email
      

      所以,ajax 会像

      $("#signupForm").submit(function(e) {
        e.preventDefault();
        var form = $(this);
        var email = $("#EmailAddress").val();
      
      $.ajax({
        type: "POST",
         url:  "/event/?email="+email, //OR  url: form.attr('action') + '?email=' + email,
         data: form.serialize(),
         success: function(data){}
       });
      
      });
      

      【讨论】:

        猜你喜欢
        • 2011-11-27
        • 2013-06-21
        • 2021-05-20
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        • 2015-05-20
        • 2015-11-25
        相关资源
        最近更新 更多