2014-01-28 138 views
0

我需要一種解析字符串的方法,通過它進行循環,將對象的元素添加到對象中並使用它進行發佈。將一個字符串解析爲一個對象發佈

我們的傳統表單只需要一個參數「字母」,我們不想在那裏改變任何東西。

例如。

<form> 
    <input type="checkbox" name="letters" value="a" /> 
    <input type="checkbox" name="letters" value="b" /> 
</form> 

var msg = "x;y;z"; 
var a = msg.split(';'); 
for (i = 0; i < a.length; i++) { 
..... 

我會使用什麼類型的對象,以及如何將它追加到此格式中?

​​

這是否有效?

這將被用於做一個 $ .post('/',someobj,function(){});

這將做

$.post('/', { letters: a, letters: b, letters: c }, function() { }); 

還是有如果有一個更簡單的方法?

+4

這不是一個有效的對象。你不能有3個相同的密鑰。也許你想要:'someobj = {letters:msg.split(';')}'? –

+2

Re是Rocket說的,如果你實際上做'someobj = {letters:a,letters:b,letters:c}',你會發現在鬆散模式下,結果是一個** **屬性的對象,來自'c'的值''letters'。 (在嚴格模式下,這是一個錯誤。) –

回答

0

如果你只需要提交一個數組,你已經有大部分代碼:

var msg = "x;y;z"; 
var a = msg.split(';'); 
$.post(url, 
    {letters: a}, 
    function (jsonResults) { 
     // ... 
    } 
); 
0

當你這樣做:

someobj = { letters: "a", letters: "b", letters: "c" } 

結果將是:

someobj = { letters: "c" } 

,因爲無論如何,你一次又一次地更換這個對象的letters鍵。

我會建議把這個逗號陣列只喜歡分離:

someobj = { letters: msg.split(";")} 

或者,該對象中把它作爲字符串, 這會做這樣的事情:

someobj = { letters: msg.split(";").join(",")} 

someobj = { letters: msg.replace(/\;/g, ",")}