2015-07-05 17 views
6

Sto utilizzando JSON per inviare dati Ajax. Sto ottenendo il numero di cellulare separato da virgola dalla casella di testo di input. E lo sto convertendo in un array javascript.
Qui di seguito è il mio codice:Array Javascript nell'array JSON

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

Risultato: myarray: [ "123", "4567"];

Ho intenzione di impostare lo stesso valore per il mio modello come di seguito:

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

Quindi, il valore diventa come di seguito:

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

Risultato: mobileno: "[ "123", "4567"] "

Quindi, il mio modello beco Mi this.model.toJSON();

Risultato: oggetto {mobileno: "[" 123" , "4567"]}

Fino a qui, tutto è corretto. dopo che ho bisogno di impostare questo modello ad un altro modello e facendo stringfy mi darà come di seguito:

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

"dati": { "mobileno": "[\" 123 \ "\" 456 \ "]"}

Ma, come ho bisogno di "dati": { "mobileno": [ "123", "456"]}

Il vostro aiuto sarà apprezzato.

+2

Perché riconvertire l'array in JSON? – JJJ

+0

nella mia casella di testo sto avendo un numero di cellulare separato da virgola come 9845098450,9845098451 ecc. Quando ottengo questo dal modello, otterrò "9845098450", "9845098451" come questo.ho bisogno di fare una richiesta come {data: {mobileno: ["9845098450", "9845098451"]}} quindi come potrei ottenerlo, –

+0

Quindi? Perché hai bisogno di JSON per quello? – JJJ

risposta

7

JSON.stringify crea una stringa dall'array. Ovviamente non è quello che vuoi. O è quello che vuoi in questo modello come hai detto

Fin qui tutto è corretto.

ma nell'altro modello, si desidera impostare l'array non come stringa, ma come matrice. Come io non so che cosa si sta facendo con le backbone.js Io lo scrivo come puro JavaScript

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

dovrebbe fare il lavoro. Ma puoi semplicemente impostare

data = { "mobileno": myarray } 

BTW. se il backbone.js non fa altro che confondere l'oggetto javascript e la notazione degli array, raccomanderei di non usarlo affatto. Come ci hai detto il backbone.js this.model.get('mobileno') restituisce un oggetto contenente il campo mobileno. Nel mio mondo di logica, anything.get('XY') dovrebbe restituire il valore di XY non un oggetto contenente la proprietà XY.

+0

Mi è piaciuto. Sta funzionando. ma qual è il problema con il mio codice? –

+2

Non ci sono problemi con il tuo codice ma con il tuo modo di vedere oggetti javascript, stringhe e JSON. In realtà JSON è solo la 'Java Script Object Notation', quindi un 'JSON.stringify (ARG)' restituisce semplicemente una stringa, i cui contenuti possono essere copiati in testo javascript per scrivere lo stato dell'oggetto. Quindi se dici 'obj = JSON.stringify (obj)' l''obj' sarà una stringa, indipendentemente da cosa fosse' obj' prima. Se 'obj' era una stringa, sarà una stringa, che contiene una stringa quotata. – ikrabbe

+0

ben spiegato. :) –