Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Php serialize()输出与datastring相同但不作为ajax数据值使用_Php_Javascript_Ajax - Fatal编程技术网

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

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 =

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

现在的问题是,当我使用数据变量作为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...
        }       
    });
移动行
$('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也返回完全相同的值。捕捉得好。在我发布我的答案后,我意识到我误读了哪个表单不起作用,我的答案不再有意义。这起作用了,但为什么如果两个字符串相同,一个有效,另一个无效?很好。在我发布我的答案后,我意识到我误读了哪个表单不起作用,我的答案不再有意义。这起作用了,但为什么如果两个字符串相同,一个有效,另一个无效?