Seite Seite javascript:
%Vor%Der Inhalt der Anfrage, die tatsächlich an den Server gesendet wird:
%Vor%Was passiert? Ist die Zeichenfolge "???" eine Art spezielles Kontrollwort oder etwas in jQuery?
Danke.
Wenn ich die Kommentare der Fehler in den anderen Antworten durchlese, liegt das echte Problem in der Tatsache, dass Sie Ihre json-Zeichenkette stringieren, bevor Sie sie an data
übergeben. data
erwartet entweder ein 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 auf die Daten über $_POST['a']
zugreifen möchten, um den Schlüssel "a"
in Ihrem JSON-Objekt zu erhalten:
( Quelle; Cowboy auf jQuery-Bugs )
Lösung 2
Wenn Sie die JSON-Zeichenfolge abrufen möchten:
%Vor% In diesem Fall enthält $_POST["MyLilString"]
das serialisierte JSON, für das Sie json_decode()
verwenden können.
( Quelle; Ajpiano auf jQuery-Bugs )
Eine weitere Belästigung
Ein weiterer Vorschlag, den ich aus den Kommentaren extrahiert habe (aber ich finde jetzt nicht -_- '), ist jsonp
auf false
zu setzen.
Dies sollte jQuery davon abhalten, die Callback-Funktion ebenfalls in den Anfragetext einzufügen.
?? wird als Platzhalter für den Rückrufnamen in den Daten für jsonp verwendet Anfragen. Wenn Sie es also finden, wird jQuery Ihre Anfrage als jsonp "promoten".
jquery bug tracker, Ticket # 12326
Verwenden Sie diese Eigenschaft
%Vor%Es ist ein bekannter Fehler :
Beim Buchen von AJAX und die Daten haben "??" ist es zu formatieren jQuery?
Es ist als behoben markiert, obwohl es in den Kommentaren zum Bug eindeutig nie behoben wurde. Das Problem sollte erneut geöffnet werden.
Zu den Problemumgehungen gehört offenbar das Ändern Ihrer JSON-Zeile wie folgt:
%Vor%und erlauben, dass es serialisiert wird. Auf diese Weise löst es die Regex nicht aus, die die doppelten Fragezeichen ersetzt.