Wenn jQuery.ajax-Daten mit einer Zeichenfolge mit "???" übergeben werden, ändert sich der Wert in "jQuery19107363727174233645_1373301489648?"

8

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.

    
MattEvansDev 08.07.2013, 16:52
quelle

3 Antworten

11

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:

%Vor%

( 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.

%Vor%

Dies sollte jQuery davon abhalten, die Callback-Funktion ebenfalls in den Anfragetext einzufügen.

    
Sumurai8 08.07.2013 18:27
quelle
3
  

?? 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%     
Ilya 08.07.2013 17:00
quelle
0

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.

    
Ryan Weir 08.07.2013 17:04
quelle

Tags und Links