Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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
Javascript 是否将包含&、=的序列化字符串转换为对象?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 是否将包含&、=的序列化字符串转换为对象?

Javascript 是否将包含&、=的序列化字符串转换为对象?,javascript,jquery,html,Javascript,Jquery,Html,上面的代码给了我一个字符串 $('#submit-form').click(function(){ var data_serialize = $("#form").serialize(); $("input[type='checkbox']:not(:checked)").each(function(e){ data_serialize += "&"+this.name+'=0'; }); $("input[type='checkbo

上面的代码给了我一个字符串

$('#submit-form').click(function(){
    var data_serialize = $("#form").serialize();
    $("input[type='checkbox']:not(:checked)").each(function(e){ 
          data_serialize += "&"+this.name+'=0';
    });
    $("input[type='checkbox']:checked").each(function(e){ 
          data_serialize += "&"+this.name+'=1';
    });
    console.log(data_serialize);
})

像这样。现在我想把它做成一个物体。请帮助我

它将此字符串转换为javascript对象

var yourString='companyName=&contactName=&role=&email=&phone=&desctiption=&websiteURL=&tccheck=0'; var yourObj=JSON.parse'{'+yourString.replace/=/g',:'.replace/&/g','+'}';
console.logJSON.stringifyyourObj 您可以通过括号表示法轻松循环表单控件以构建对象:

companyName=&contactName=&role=&email=&phone=&desctiption=&websiteURL=&tc-check=0
请注意,我们跳过禁用的输入和没有名称的输入,因为这是表单的标准HTML和serialize的功能。以上内容保留了对复选框的非标准处理

例如:

$“提交表单”。单击函数{ var obj={}; $form.findinput,textarea,select.eachfunction{ var type=this.type.toLowerCase; 如果this.name&!this.disabled&&type!==按钮&&type!==提交{ 如果类型===复选框{ obj[this.name]=this.checked?1:0; }否则{ obj[this.name]=$this.val; } } }; console.logobj; }; 福 酒吧 测试
JSON.parse“{'+'YOURSTRING.replace/=/g':'。replace/&/g','+'}'@Shubham谢谢。它起作用了。我明白逻辑。但是,我搜索了预定义的方法。无论如何thanks@Mr_Perfect-我认为javascript中没有预定义的函数。即使你不能在JavaScription中直接从URL获取数据,对我来说也是非常脆弱的。如果我输入的值带有空白,它会给出,比如companyName=Hello%Stackoverflow,无法替换它。你能这样做吗?如果替换为空格,则输出包含20而不是space@Mr_Perfect-是百分之二十还是仅仅百分之二十?我不认为只有%会来。对不起,这是我的mistake@Mr_Perfect:在某个地方会有一个循环,为什么不在这个代码中?
$('#submit-form').click(function(){
    var obj = {};
    $("#form").find("input, textarea, select").each(function() {
        var type = this.type.toLowerCase();
        if (this.name && !this.disabled && type !== "button" && type !== "submit") {
            if (type === "checkbox") {
                obj[this.name] = this.checked ? 1 : 0;
            } else {
                obj[this.name] = $(this).val();
            }
        }
    });
    console.log(obj);
});