serialize()输出与datastring相同但不作为ajax数据值

时间:2013-08-13 19:16:49

标签: php javascript ajax

我有一个表单设置了4个输入字段(登录,电子邮件,密码,密码再次)当我点击提交时验证输入并将其发送到进程注册.php 通过 GET

现在问题是当我使用数据变量作为 ajax数据时,它完全正常但是如果我使用 $(“form”)。 ()它不再起作用了......

编辑:它没有将变量传递给process-register.php

我用 document.write 输出了两个字符串,它们完全相同!!! 这怎么可能?!请帮我解决这个问题......

var data = 'login=' + login.val() + '&email=' + email.val() + '&pass=' + pass.val() + '&confirmpass='  + confirmpass.val();

    //document.write($("form").serialize());  --> The output is
    //document.write(data);                   --> exactly the same! :O

    $('input').attr('disabled','true');

    $('.loading').show();

    $.ajax({
        url: "process-register.php", 

        type: "GET",

        data: data,                  //--> works!            
        data: $("form").serialize(), //--> doesn't work!

        cache: false,

        success: function (echo) {
        //success code...
        }       
    });

1 个答案:

答案 0 :(得分:1)

序列化数据后,将行$('input').attr('disabled','true');移动到 如下所示。

var data  = $("form").serialize();
$('input').attr('disabled',true);

$.ajax({
  url: "process-register.php",
  type: "GET",
  data: data    
});

来自API文档http://api.jquery.com/serialize/

  

注意:只有“successful controls”序列化为字符串。没有   由于表单未提交,因此提交按钮值已序列化   使用按钮。对于要包含在表单元素中的值   序列化字符串,该元素必须具有name属性。价值来自   复选框和单选按钮(“radio”或“checkbox”类型的输入)   仅在检查时才包括在内。来自文件选择元素的数据   没有序列化。

它也不会序列化disabled控件