2015-07-05 14 views
6

Ich verwende JSON, um Ajax-Daten zu senden. Ich erhalte Komma-getrennte Handynummer von der Eingabetextbox. Und ich wandle es in Javascriptarray um.
Unten ist mein Code:Javascript-Array zu JSON-Array

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

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

I wie unter den gleichen Wert auf mein Modell setzen werde:

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

Dann wird der Wert wie folgt:

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

Ergebnis: mobileno: „[ "123", "4567"] "

Also mein Modell beco this.model.toJSON(); mir

Ergebnis: Object {mobileno: "[" 123" , "4567"]}

Bis hier ist alles in Ordnung. danach muss ich ein anderes Modell dieses Modell setzen und stringfy tut mir geben wird, wie unten:

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

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

Aber, ich brauche wie "Daten": { "mobileno": [ "123", "456"]}

Ihre Hilfe geschätzt wird.

+2

Warum konvertieren Sie das Array zurück in JSON? – JJJ

+0

in meinem Textfeld habe ich Komma getrennt Handynummer wie 9845098450,9845098451 etc .. wenn ich das vom Modell bekomme ich wie "9845098450", "9845098451" wie folgt bekommen.Ich muss eine Anfrage machen wie {data: {mobileno: ["9845098450", "9845098451"]}} also wie könnte ich dies erreichen, –

+0

Also? Warum brauchst du JSON dafür? – JJJ

Antwort

7

JSON.stringify erstellt eine Zeichenfolge aus Ihrem Array. Das ist offensichtlich nicht das, was du willst. Oder es ist was du willst in diesem Modell wie du gesagt hast

Bis hier ist alles korrekt.

In dem anderen Modell möchten Sie das Array jedoch nicht als Zeichenfolge, sondern als Array festlegen. Wie ich weiß nicht, was Sie mit Ihrem Backbone.js tun Ich schreibe es als reine Javascript

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

sollte die Arbeit machen. Aber Sie können einfach setzen

data = { "mobileno": myarray } 

BTW. Wenn die backbone.js nur die JavaScript-Objekt- und Array-Notation verwirrt, würde ich empfehlen, sie überhaupt nicht zu verwenden. Wie Sie uns gesagt haben, gibt die backbone.js this.model.get('mobileno') ein Objekt zurück, das das Feld mobileno enthält. In meiner Welt der Logik anything.get('XY') sollte der Wert XY kein Objekt mit der XY Eigenschaft zurückgegeben werden.

+0

Ich mochte das. Es funktioniert. aber was ist das problem mit dem my code? –

+2

Es gibt kein Problem mit Ihrem Code, aber mit der Art, wie Sie auf JavaScript-Objekte, Strings und JSON schauen. Eigentlich ist JSON nur die 'Java Script Object Notation', also ein 'JSON.stringify (ARG)' gibt nur einen String zurück, dessen Inhalt in Javascript-Text kopiert werden kann, um den Status des Objekts zu notieren. Wenn Sie also 'obj = JSON.stringify (obj)' sagen, wird 'obj' eine Zeichenkette sein, unabhängig davon, was' obj' vorher war. Wenn 'obj' eine Zeichenkette ist, wird sie eine Zeichenkette sein, die eine Zeichenkette in Anführungszeichen enthält. – ikrabbe

+0

gut erklärt. :) –