2012-10-19 13 views
13

Ich versuche, ein Json-Objekt aus Variablen, die ich in einem Formular bekomme, zu erstellen.Erstellen von Json-Objekt mit Variablen

var firstName = $('#firstName').val(); 
var lastName = $('#lastName').val(); 
var phone  = $('#phoneNumber').val(); 
var address = $('#address').val(); 

Bisher habe ich den Code unten, aber es wird nicht validiert oder funktioniert. Ich bin neu dazu, bitte helfen Sie! ändern var dazu:

var jsonObject = 
       { 
       firstName: firstName, 
       lastName: lastName, 
       phoneNumber:phoneNumber, 
       address:address 
       } 

in JSONlint ich diese Störung erhalte:

Parse error on line 1: varjsonObject={
^ Expecting '{', '['

+0

Sind Sie sicher, dass Sie ** ** JSON und nicht eher ein JS-Objekt erstellen? Auch welche Teile des Objekts sollen Variablen sein? Wie ist der erste Teil mit dem zweiten Teil verbunden? Wenn Sie 'formObject' wirklich in JSON konvertieren wollen, haben Sie kein Glück, da Sie jQuery-Objekte nicht in JSON konvertieren können (und Sie' '' 'in' "firstName": ('#firstName') ') verpassen. Bitte seien Sie genau über das Ergebnis, das Sie erhalten möchten, jetzt ist es etwas verwirrend, da es scheint, dass Sie mit der richtigen Terminologie zu kämpfen haben. –

+0

Sie könnten es hilfreich finden, mehr über das Objekt im MDN JavaScript Guide zu lesen: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects. –

+0

das Ergebnis, das ich will, ist ein JSON-Objekt, das ich mit Ajax senden kann. – Anthony

Antwort

16

Wenn Sie in doppelten Anführungszeichen JSON Verwendung JSON.stringify(object)

var $items = $('#firstName, #lastName,#phoneNumber,#address ') 
var obj = {} 
$items.each(function() { 
    obj[this.id] = $(this).val(); 
}) 

var json= JSON.stringify(obj); 

DEMO: http://jsfiddle.net/vANKa/1

8

Es auf -Objektliteral

Ich bin mir nicht sicher, was Sie Ihre Struktur genannt wollen sein, aber nach dem, was Sie oben haben, wo Sie die Werte in Variablen setzen, versuchen Sie dies.

var formObject = {"formObject": [ 
       {"firstName": firstName, "lastName": lastName}, 
       {"phoneNumber": phone}, 
       {"address": address}, 
       ]} 

Obwohl dies scheint mehr Sinn zu machen (Warum Sie ein Array in der obigen wörtlichen haben Sie?):

var formObject = { 
    firstName: firstName 
    ... 
} 
4

Sie ein DOM-Element verweisen, wenn so etwas $('#lastName') tun. Das ist ein Element mit id Attribut "lastName". Warum das tun? Sie möchten auf den in einer lokalen Variablen gespeicherten Wert verweisen, der völlig unabhängig ist. Versuchen Sie, diese (ist die Zuordnung zu formObject unter der Annahme, im gleichen Umfang wie die Variablendeklarationen) -

var formObject = { 
    formObject: [ 
     { 
      firstName:firstName, // no need to quote variable names 
      lastName:lastName 
     }, 
     { 
      phoneNumber:phoneNumber, 
      address:address 
     } 
    ] 
}; 

Dies allerdings sehr merkwürdig erscheint: Sie erstellen ein Objekt „formobject“, die ein Mitglied „formobject“ genannt enthält, enthält ein Array von Objekten.

3

Versuchen Sie dies, um zu sehen, wie Sie ein Objekt aus Strings erstellen können.

var firstName = "xx"; 
var lastName = "xy"; 
var phone  = "xz"; 
var adress = "x1"; 
var obj = {"firstName":firstName, "lastName":lastName, "phone":phone, "address":adress}; 
console.log(obj); 
2
var formValues = { 
    firstName: $('#firstName').val(), 
    lastName: $('#lastName').val(), 
    phone: $('#phoneNumber').val(), 
    address: $('#address').val() 
}; 

Hinweis dies die Werte der Elemente am Zeitpunkt enthält die Objektliteral wurden interpretiert, nicht, wenn die Eigenschaften des Objekts zugegriffen werden. Dafür müsstest du einen Getter schreiben.

+0

Danke für den Tipp. Ist die Art, wie ich Variablen verwendet habe, korrekt in meinem aktualisierten Code? – Anthony

+0

@Anthony Ja, es ist richtig. JSLint liefert Ihnen jedoch keine aussagekräftigen Informationen, da Sie ein ** Javascript-Objekt ** und nicht JSON haben. – jbabey

Verwandte Themen