2010-11-18 31 views
2

我有下面的代碼。我希望它顯示了JSON格式的值和字段的名稱,而只是表明這一點:jQuery:試圖使用serializeArray()

[目標對象],[對象 對象],[目標對象],[對象 對象], [對象的對象]

<script type="text/javascript"> 

$(document).ready(function() { 


       $('#forma').submit(function() { 

        alert($(this).serializeArray()); 
        return false; 
       }); 

});  

</script> 


<form id="forma"> 
    <div><input type="text" name="a" value="1" id="a" /></div> 
    <div><input type="text" name="b" value="2" id="b" /></div> 
    <div><input type="hidden" name="c" value="3" id="c" /></div> 
    <div> 
    <textarea name="d" rows="8" cols="40">4</textarea> 
    </div> 
    <div><select name="e"> 
    <option value="5" selected="selected">5</option> 
    <option value="6">6</option> 
    <option value="7">7</option> 
    </select></div> 
    <div> 
    <input type="checkbox" name="f" value="8" id="f" /> 
    </div> 
    <div> 
    <input type="submit" name="g" value="Submit" id="g" /> 
    </div> 
</form> 

問候

哈維

+0

什麼是你想從這個得到一個表格內限制範圍的DIV?一個漂亮的打印版本的數據或可用的東西? – wajiw 2010-11-18 17:55:56

回答

5

這是因爲.serializeArray()返回一個對象像這樣的數組:

[{name: "name", value: "value"}....] 

得到一個字符串,你可以看到,使用.serialize()這樣的:

alert($(this).serialize()); 

這是與調用陣列上$.param(),像這樣:

alert($.param($(this).serializeArray())); 

要清楚,這是一個數據字符串的格式,例如一個GET或一個POST,你應該自己使用JSON.stringify()如果你想序列化爲JSON。

0

對於那些誰想要一個更實際的代碼: fData=$("#myForm").serializeArray(); // or $("#myDiv :input").serializeArray(); //alert(fData.length) // how many inputs got picked up var msg=""; for(var i=0;i<fData.length;i++){ var raKy=Object.keys(fData[i]); msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); } alert(msg); 您可以通過使用註釋掉的代碼,而不是