Wenn ich durch die Kommentare der Fehler in den anderen Antworten lesen, das echte Problem liegt in der Tatsache, dass Sie Ihren Json-Zeichenfolge stringify, bevor es zu data
vorbei. data
erwartet entweder String
, das eine Abfrage enthält (z. B. "a=asdf&b=qwer"
oder Object
, die die Schlüssel und Werte enthält, die in eine Abfrage umgewandelt werden). Sie übergeben stattdessen etwas wie '{"a":"asdf","b":"qwer"}'
, ein String
, das ein stringifiziertes Array enthält, das keine Abfrage ist. Es schafft es irgendwie in Daten zu konvertieren, die der Server versteht, aber anscheinend löst er auch diesen Bug/Feature aus.
Lösung 1
Wenn Sie die Daten über $_POST['a']
zugreifen möchten Schlüssel "a"
in Ihrem JSON-Objekt zu erhalten:
$.ajax({
async: false,
data: model, //Pass the Array itself to the function
dataType: "json",
type: "post",
url: serverSideURL
});
(Source; Cowboy on jQuery bugs)
Lösung 2
Wenn Sie die JSON-String abrufen möchten:
$.ajax({
async: false,
data: {
"MyLilString": JSON.stringify(model)
}
dataType: "json",
type: "post",
url: serverSideURL
});
In diesem Fall $_POST["MyLilString"]
enthält die serialisierte JSON, die Sie json_decode()
auf verwenden können.
(Source; Ajpiano on jQuery bugs)
Ein weiterer sugestion
Ein weiterer Vorschlag, den ich aus den Kommentaren Extrakt tat (aber ich bin jetzt nicht in der Lage zu finden -_- ') ist jsonp
zu false
einzustellen.
$.ajax({
async: false,
data: model
dataType: "json",
type: "post",
url: serverSideURL,
jsonp: false
});
Dies sollte jQuery vom Einfügen der Callback-Funktion in den Anfragetext zu stoppen.
'processData: false' wird dies höchstwahrscheinlich beheben. – Ohgodwhy
Nur neugierig: Welche Version von jQuery verwenden Sie? – Sumurai8
Warum reichen Sie ??? sowieso? Warum nicht einfach null oder eins? – Petah