从Form生成JSON字符串

时间:2013-08-21 13:27:18

标签: javascript jquery json post

我是JSON的新手并且努力理解它正在发挥作用。

HTML

<form id="edge" class="form-horizontal" method="post" action="javascript:submit();">
    <input type="text" class="input-xlarge" id="latency" name="latency" placeholder="latency">
    <input type="text" class="input-xlarge" id="throughput" name="throughput" placeholder="throughput">
    <input type="text" class="input-xlarge" id="outUID" name="outUID" placeholder="outUID">
    <input type="text" class="input-xlarge" id="inUID" name="inUID" placeholder="inUID">
    <button type="submit" class="btn btn-success" >Submit Data</button>
</form>

要生成的JSON字符串:

{"latency":1.6,"throughput":6.01,"outUID":{"V_ID":"40"},"inUID":{"V_ID":"16"}}

Here's the form and JSON String to be generated

有人可以指导我如何创建嵌套的JSON对象吗?

3 个答案:

答案 0 :(得分:1)

由于您希望outUIDinUID的值由于某种原因而嵌套,因此您需要手动构建对象。这是一个简单的例子:

var $latency = $('#latency'),
    $throughput = $('#throughput'),
    $outUID = $('#outUID'),
    $inUID = $('#inUID');

var myJSONObject = {
    latency:$latency.val(),
    throughput:$throughput.val(),
    outUID:{
        V_ID:$outUID.val()
    },
    inUID:{
        V_ID:$inUID.val()
    }
};
var stringJSON = JSON.stringify(myJSONObject);

答案 1 :(得分:0)

纯javascript示例

var els=document.getElemtById('edge').getElementsByTagName('input');

var els=document.querySelectorAll('input[class=input-"xlarge"]');

获取元素

然后

var array=[]
for(var a=0,b;b=els[a]; ++a){
 array[a]=b.value
}

数组是json对象

JSON.styringify(array)

是json字符串

提示:如果您计划将此与ajax一起使用  有一种称为FormData();

的新方法

这样:

var fd=FormData(document.getElemtById('edge'));

包含整个表单,包括文件

答案 2 :(得分:0)

此代码允许您在不对字段属性进行硬编码的情况下添加更多字段

http://jsfiddle.net/6vQY9/

HTML

<form id="edge" class="form-horizontal" method="post" action="javascript:submit();">
    <input type="text" class="input-xlarge" id="latency" name="latency" placeholder="latency">
    <input type="text" class="input-xlarge" id="throughput" name="throughput" placeholder="throughput">
    <input type="text" class="input-xlarge" id="outUID" name="outUID" placeholder="outUID" data-prop="V_ID">
    <input type="text" class="input-xlarge" id="inUID" name="inUID" placeholder="inUID" data-prop="V_ID">
    <button type="submit" class="btn btn-success">Submit Data</button>
</form> <pre></pre>

JS

function submit() {
    var JSONString = "";
    jQuery('#edge input').each(function () {
        var that = jQuery(this);
        var val = that.val();
        var partJSON = "";
        var quote = "\"";
        if (that.data('prop')) {
            partJSON = "{ " + quote +that.data('prop') + quote+ " : " + quote + val + quote + " }";
        } else {
            partJSON = val;
        }
        var comma = that.next('input').length > 0 ? "," : "";

        partJSON = quote + that.prop('id') + quote + ":" + partJSON + comma;
        JSONString += partJSON

    });

    JSONString = "{ " + JSONString + " }";

    jQuery('pre').text(JSONString);
}