Php serialize()输出与datastring相同但不作为ajax数据值使用
我已经设置了一个表单,其中包含4个输入字段(登录、电子邮件、密码、再次输入密码),当我单击提交时,它将验证输入并通过GET将其发送到process-register.php 现在的问题是,当我使用数据变量作为ajax数据时,一切都很好,但是如果我使用$(“form”).serialize()它就不再工作了 编辑:它不会将变量传递给process-register.php 我用document.write输出了两个字符串,它们是完全相同的!!! 这怎么可能?!请帮我修一下这个Php serialize()输出与datastring相同但不作为ajax数据值使用,php,javascript,ajax,Php,Javascript,Ajax,我已经设置了一个表单,其中包含4个输入字段(登录、电子邮件、密码、再次输入密码),当我单击提交时,它将验证输入并通过GET将其发送到process-register.php 现在的问题是,当我使用数据变量作为ajax数据时,一切都很好,但是如果我使用$(“form”).serialize()它就不再工作了 编辑:它不会将变量传递给process-register.php 我用document.write输出了两个字符串,它们是完全相同的!!! 这怎么可能?!请帮我修一下这个 var data =
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...
}
});
移动行$('input').attr('disabled','true')将数据序列化后,编码>到。
如下图所示
var data = $("form").serialize();
$('input').attr('disabled',true);
$.ajax({
url: "process-register.php",
type: "GET",
data: data
});
来自API文档()
注意:只有“”被序列化为字符串。不
提交按钮值已序列化,因为表单未提交
使用按钮。用于将表单元素的值包含在
序列化字符串时,元素必须具有name属性。价值来自
复选框和单选按钮(输入类型为“单选”或“复选框”)
仅当选中时才包括。来自文件选择元素的数据
未序列化
它不会序列化禁用的控件也移动行$('input').attr('disabled','true')将数据序列化后,编码>到。
如下图所示
var data = $("form").serialize();
$('input').attr('disabled',true);
$.ajax({
url: "process-register.php",
type: "GET",
data: data
});
来自API文档()
注意:只有“”被序列化为字符串。不
提交按钮值已序列化,因为表单未提交
使用按钮。用于将表单元素的值包含在
序列化字符串时,元素必须具有name属性。价值来自
复选框和单选按钮(输入类型为“单选”或“复选框”)
仅当选中时才包括。来自文件选择元素的数据
未序列化
它不会序列化禁用的
控件请定义“它不工作”。ajax请求的最终url是什么?是否有任何查询字符串参数?可能是空格或其他HTML特殊字符的差异,这在使用document.write()时可能不明显。请改为尝试console.log()
。请注意,serialize()
将调用encodeURIComponent
,手动创建数据时不会调用该组件。这将正确处理特殊字符。更新了“它不工作”->变量不会传递给phpNo,它不是。。和console.log也返回完全相同的值。请定义“它不工作”。ajax请求的最终url是什么?是否有任何查询字符串参数?可能是空格或其他HTML特殊字符的差异,这在使用document.write()时可能不明显。请改为尝试console.log()
。请注意,serialize()
将调用encodeURIComponent
,手动创建数据时不会调用该组件。这将正确处理特殊字符。更新了“它不工作”->变量不会传递给phpNo,它不是。。和console.log也返回完全相同的值。捕捉得好。在我发布我的答案后,我意识到我误读了哪个表单不起作用,我的答案不再有意义。这起作用了,但为什么如果两个字符串相同,一个有效,另一个无效?很好。在我发布我的答案后,我意识到我误读了哪个表单不起作用,我的答案不再有意义。这起作用了,但为什么如果两个字符串相同,一个有效,另一个无效?