使用Jquery将序列化表单数据转换为json对象?

时间:2017-07-24 06:36:35

标签: javascript jquery json

我正在尝试从我的表单中获取数据,然后将其发送到servlet。但后来我注意到序列化表单后得到的json对象不是有效的json对象。我能做错什么?这是我到目前为止所尝试的。

<script type="text/javascript">
$(document).on("click", "#check", function() { // When HTML DOM "click" event is invoked on element with ID "somebutton", execute the following function...
      event.preventDefault();
      var data = $("#register").serialize().split("&");
      var obj={};
        for(var key in data)
        {
            console.log(data[key]);
            obj[data[key].split("=")[0]] = data[key].split("=")[1];
        }

        console.log(obj);
// store json string
     $.ajax({
            type: "POST",
            url: "HomeServlet",
            dataType: "text",
            contentType: "application/json",
            data:{"res":obj},
            success: function(data){
                console.log(data);
            },
            error:function(){
                console.log("error");
            },

        });
});

</script>

我从表单中获取的json对象是 -

{
    apiname: "jdjdj",
    apiendpoint: "sdjsdj",
    apiversion: "djdjd",
    source: "internet"
}

这就是我想要的 -

{
    "apiname": "jdjdj",
    "apiendpoint": "sdjsdj",
    "apiversion": "djdjd",
    "source": "internet"
}

5 个答案:

答案 0 :(得分:0)

你得到的json没有错。

只需将其字符串化即可获得所需的对象

var myJSON1 = JSON.stringify(data);

这将起作用

答案 1 :(得分:0)

你可以尝试一下

JSON.stringify(json_data);

答案 2 :(得分:0)

正如其他人所说,你传递一个原始的javascript对象。 您必须做的是在通过网络发送之前转换此对象。

package.json

答案 3 :(得分:0)

而不是这个foreach循环只使用serializeArray()然后json_parse()这两个函数将适合你。

var data = $("#register").serializeArray();
var obj= JSON_parse(JSON_stringify(data));

答案 4 :(得分:0)

请使用JSON.stringify(obj, undefined, 2);