1

当我单击提交时,我设置了一个包含 4 个输入字段(登录名、电子邮件、密码、密码)的表单,它验证输入并通过GET将其发送到process-register.php

现在,当我将data变量用作ajax 数据时,问题就来了,它工作得很好,但是如果我使用$("form").serialize()它就不再工作了......

编辑:它不会将变量传递给 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...
        }       
    });
4

1 回答 1

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/ )

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

它也不会序列化disabled控件

于 2013-08-13T19:30:28.453 回答