Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX表单提交序列化_Javascript_Jquery_Html_Ajax_Forms - Fatal编程技术网

Javascript AJAX表单提交序列化

Javascript AJAX表单提交序列化,javascript,jquery,html,ajax,forms,Javascript,Jquery,Html,Ajax,Forms,我有一个简单的表格,收集名字、姓氏和电子邮件 表单使用AJAX将数据提交到另一个站点。提交表单时,名字和姓氏的记录不正确,而是以序列化格式返回。电子邮件记录得很好。我无法在我的计算机上复制该问题,但所有其他提交都有相同的问题 我怀疑serialize()函数是罪魁祸首,因为表单所在的站点正在使用jQuery 1.11.1,但文档说它似乎从v1开始就支持该函数 这是报表中记录的内容: 姓氏-5AD65AFA9A4 A6 名字-5ad65afa9a465 电邮-foobar@gmail.com &

我有一个简单的表格,收集名字、姓氏和电子邮件

表单使用AJAX将数据提交到另一个站点。提交表单时,名字和姓氏的记录不正确,而是以序列化格式返回。电子邮件记录得很好。我无法在我的计算机上复制该问题,但所有其他提交都有相同的问题

我怀疑serialize()函数是罪魁祸首,因为表单所在的站点正在使用jQuery 1.11.1,但文档说它似乎从v1开始就支持该函数

这是报表中记录的内容:

  • 姓氏-5AD65AFA9A4 A6
  • 名字-5ad65afa9a465
  • 电邮-foobar@gmail.com

    <form method="GET" action="https://www.mywebsite.org/submission-page" accept-charset="UTF-8" id="survey_5481">
    <input class="form-control placeholder" required="required" placeholder="First Name" name="cons_first_name" id="cons_first_name" type="text"maxlength="50">
    <input class="form-control placeholder" required="required" placeholder="Last Name" name="cons_last_name" id="cons_last_name" type="text" maxlength="50">
    <input class="form-control placeholder" required="required" placeholder="E-mail" name="cons_email" id="cons_email" type="email" maxlength="255" pattern="[a-zA-Z0-9!#$%&amp;'*+\/=?^_`{|}~.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*">
    
    <button type="submit" class="btn" name="submit" id="submit" value="Submit">Submit</button>
    </form>
    
    <div id="form-submit-message" style="display: none;padding: 15px;margin-bottom: 22px; color: white; font-size: 20px; text-align: center;">Thank you for joining!</div>
    
    <script type="text/javascript">
    
    $(document).ready(function() {
    var form = $('#survey_5481');
    
    form.on('submit',function(e) {
        $.ajax({
            type: "GET",
            url: "https://www.mywebsite.org/submission-page",
            data: $(this).serialize()
        }).always(function(data){
            $('#survey_5481').hide();
            $("#form-submit-message").show();
        });
    
        return false;
    });
    }); 
    </script>
    
    
    提交
    谢谢你的加入!
    $(文档).ready(函数(){
    变量形式=$(“#调查5481”);
    表格(‘提交’)功能(e){
    $.ajax({
    键入:“获取”,
    url:“https://www.mywebsite.org/submission-page",
    数据:$(this).serialize()
    }).始终(功能(数据){
    $('u#survey_5481')。隐藏();
    $(“#表单提交消息”).show();
    });
    返回false;
    });
    }); 
    
试试这个:-

$("#survey_5481").submit(function(event){
event.preventDefault(); //prevent default action 
var post_url = $(this).attr("action"); //get form action url
var form_data = $(this).serialize(); //Encode form elements for submission

$.get( post_url, form_data, function( response ) {
  $("#form-submit-message").html( response );
});
});

忽略ajax位以简化此过程。您可以在serialize的输出上使用console.log,并告诉我们输入数据吗
form.on('submit',函数(e){console.log($(this.serialize())})“我怀疑”…是什么阻止你证明它?要么按照noface说的做,要么查看网络选项卡并找到ajax请求,然后查看实际提交的内容。请注意,作为一篇文章,这确实会更好,因为现在您的用户详细信息和电子邮件地址将记录在记录URL访问的任何位置,例如Web服务器日志或潜在的浏览历史记录,因为GET最终会形成URL字符串的一部分,这可能会带来安全风险。当然,通过POST,它们会在体内传输,因此不会以相同的方式记录。为了在报告中获得数据,您在表单上输入了什么?有趣的是,只有三个字段中的两个受到影响?为了澄清上面发布的一些事情:-console.log返回“cons_first_name=Test2&cons_last_name=testlname&cons_email=test22%40gmail.com”-我更改了帖子,以作为测试,看看这是否会改变什么(它没有改变)-我在进行测试时的所有输入都很顺利…我的环境之外的用户似乎拥有这些序列化名称,我执行了@Noface建议的操作。正确的输出。你确定问题出在客户端吗?最好解释一下为什么你认为这样可以解决问题