我有一个表单设置了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...
}
});
答案 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
控件