2012-12-19 12 views
35

Versucht, json zu senden. Hier ist meine Funktion:JQuery Post sendet Formulardaten und nicht JSON

var object = ... ; 

$.ajax({ 
     type: 'POST', 
     url: '<url>', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     data: object 
    }); 

Aber immer, wenn ich Chrome überprüfen, sendet es immer als Abfrage params:

Request Payload: 
startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)& 

Wie bekomme ich es als JSON zu schicken?

Antwort

55

Mit JSON.stringify(object)

Probe:

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    data: JSON.stringify(object) 
}); 

Hinweis JSON.stringify ist nicht in allen Browsern unterstützt (http://caniuse.com/#feat=json), insbesondere Browser IE7 und niedriger.

Wenn Sie unterstützen müssen diese auch Browser Sie diese Javascript-Bibliothek verwenden können: https://github.com/douglascrockford/JSON-js

+0

Vielen Dank! – Jason

4

Stringify mit JSON.stringify(object)

Ändern Sie den data Feld:

... 
data: JSON.stringify(object), 
... 

Die Art und Weise Sie es tun, IMO, sieht jQuery den Parameter als ein Wörterbuch (Schlüssel-Wert-Paare), und erstellt daraus eine perzentilcodierte Zeichenfolge; und deshalb sehen Sie diese Ausgabe.

+0

danke, geholfen/ – ajahongir

-1

Ich fand es einfacher Daten in Verzug senden ‚application/x-www-form-urlencoded‘ -Format mit JSON als Feld wie folgt aus:

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    dataType: 'json', 
    data: {json:JSON.stringify(object)} 
}); 

On-Server verwenden, um die reguläre Methode Feld json genannt zu empfangen.

werden gerade geteilt, um nachzusehen, ob dies für Sie valide ist.

+0

Guter Punkt! Es hängt nur davon ab, wie das OP es mit seinem Server-Setup braucht/will – Ian

Verwandte Themen