2010-12-05 9 views
1

Ich versuche, eine jQuery-Funktion zu schreiben, um eine Abfrage-Zeichenfolge an ein PHP-Skript zu senden, aber ich kann nicht scheinen, den Text im richtigen Format an den Server zu bekommen. Ich möchte diese Abfragezeichenfolge (mit der entsprechenden URL-Codierung) senden:Senden von JSON-Daten an PHP mit jQuery

data={"name":"Chris"} 

wobei "Daten" immer eine JSON-Zeichenfolge ist. Mit .ajax Funktion jQuery habe ich versucht, meine Datenvariable Einstellung

data: { 'data': {"name":"chris"} }, 

aber PHP endet immer:

data[name]=chris 

Was den richtigen Weg ist, die Daten zurück an den Server zu senden, so dass das JSON-String richtig ist reserviert, ohne die Schnur in Handarbeit machen zu müssen?

+0

Es ist nicht sehr klar, was Sie tun möchten – Harmen

+0

Haben Sie den Datentyp als 'Json' festgelegt? dataType: 'json' – Elliott

+0

dataType ist für die Daten, die vom Server kommen. Ich versuche, JSON-Daten an den Server zu senden. – dragonmantank

Antwort

2

Zuerst müssen Sie json2.js verwenden, da jQuery die Fähigkeit zur Ausgabe von JSON nicht enthält, nur um es zu analysieren, und die von uns verwendete Methode wird in IE 6/7 nicht unterstützt. Konvertieren Sie Ihre JavaScript-Objekt JSON:

var encoded = JSON.stringify(data); 

Dann müssen Sie enthalten diese Zeichenfolge als Anforderungsdaten-JSON formatiert:

$.getJSON(url, {data: encoded}, function() { ... }); 

Edit: Eine ältere Version dieses Beitrags auf die jquery- bezeichnet json plugin, aber es ist offensichtlich, dass dieses Plug-in geschrieben wurde, als jQuery 1.3.x aktuell war.

+0

Das hat es getan. Vielen Dank! – dragonmantank

0

Obwohl unklar von Ihrer Frage, wenn Sie versuchen, zu wissen, wie man JSON Zeichenfolgen in PHP richtig behandelt, wäre der beste Weg, die Funktionen und json_decode zu verwenden.

1

Alles, was Sie tun müssen, ist Anführungszeichen um die Zeichenfolge

data: { 'data': '{"name":"chris"}' } 
0

Das ist falsch:

data: { 'data': {"name":"chris"} }, 

Sie erhalten ein indiziertes Array mit Schlüssel des Namens und der Wert von chris.

das ist richtig:

{ name : "chris" } 

Wenn Sie in PHP wollen:

name = "chris"; 

Dann müssen Sie je nach

{ name : "chris" } 

senden, wenn Sie GET können Sie erhalten:

$name = $_GET["name"]; 

echo $name; // chris