2015-07-05 141 views
6

我正在使用JSON發送Ajax數據。我正在從輸入文本框中獲取逗號分隔的手機號碼。並且,我將它轉換爲javascript數組。
下面是我的代碼:JavaScript數組到JSON數組

var myarray = {}; 
    myarray = this.model.get('mobileno').split(','); 

結果:myarray中:[ 「123」, 「4567」];

我將相同的值設置爲我的模型如下圖所示:

this.model.set('mobileno',JSON.stringify(myarray)); 

然後,值變得象下面這樣:

console.log(this.model.get('mobileno')); 

結果:mobileno:「[ 「123」,「4567」]「

所以,我的模型beco我this.model.toJSON();

結果:對象{mobileno: 「[」 123" , 「4567」]}

到這裏,一切是正確的。之後,我需要設置這個模型到另一個模型,做stringfy會給我象下面這樣:

anotherModel.set('data', this.model); 

「數據」:{ 「mobileno」: 「[\」 123 \ 「\」 456 \ 「]」}

但是,我需要一個像 「數據」:{ 「mobileno」: 「123」, 「456」]}

您的幫助將不勝感激。

+2

爲什麼你將數組轉換回JSON? – JJJ

+0

在我的文本框中我有逗號分隔的手機號碼,如9845098450,9845098451等..當我從模型中得到這個我會像這樣得到像「9845098450」,「9845098451」。我需要提出{data:{mobileno:[「9845098450」,「9845098451」]}}這樣的請求,我怎麼能夠實現這個, –

+0

那麼?爲什麼你需要JSON呢? – JJJ

回答

7

JSON.stringify從你的數組中產生一個字符串。這顯然不是你想要的。或者正如你所說,這是你想在這個模型。

直到這裏一切都是正確的。

但在另一個模型中,您希望將數組設置爲不是字符串,而是數組。因爲我不知道你在用你的backbone.js做什麼,所以我把它寫成純粹的javascript

data = JSON.parse(this.model.get("mobileno")) 

應該做這項工作。但你可以只設置

data = { "mobileno": myarray } 

順便說一句。如果backbone.js只會混淆javascript對象和數組表示法,我會建議不要使用它。正如您告訴我們的,backbone.js this.model.get('mobileno')返回一個包含mobileno字段的對象。在我的邏輯世界中,anything.get('XY')應該返回值XY而不是包含XY屬性的對象。

+0

我喜歡這樣。它的工作。但是我的代碼有什麼問題? –

+2

您的代碼沒有問題,但是您可以看到javascript對象,字符串和JSON。實際上JSON只是'Java Script Object Notation',因此'JSON.stringify(ARG)'只返回一個字符串,其內容可以複製到javascript文本中以記錄對象的狀態。所以,如果你說'obj = JSON.stringify(obj)','obj'將是一個字符串,不管之前有什麼'obj'。如果'obj'是一個字符串,它將是一個字符串,它包含一個帶引號的字符串。 – ikrabbe

+0

很好解釋。 :) –