jQuery JSONP ruft den Rückruf nicht auf

8

Ich habe ein Problem mit jsonp und jquery.

Das ist mein Code -

%Vor%

jQuery fügt etwas wie ?callback=myCallback&_=1340513330866 zu my_url hinzu und die Daten, die von my_url zurückgegeben werden, sind myCallback('abcd') - obwohl es in Wirklichkeit einen HTML-Code anstelle von abcd zurückgibt.

Problem: abcd wird nicht in der Konsole über myCallback protokolliert. Also, was mache ich falsch? Ich hatte den Eindruck, dass die zurückgegebenen Daten so ausgeführt werden, wie sie in den Skript-Tags enthalten sind.

    
user1437328 24.06.2012, 04:50
quelle

3 Antworten

16

Wenn Sie eine eigene Funktion verwenden, müssen Sie sie explizit als global deklarieren. Zum Beispiel:

%Vor%

DEMO

Erläuterung

Jede Funktion, die als Antwort auf eine erfolgreiche JSONP-Anforderung aufgerufen werden soll, muss global sein. jQuery macht das auch. Dies liegt daran, dass JSONP nichts anderes ist, als eine (dynamisch generierte (meiste Zeit)) JavaScript-Datei mit einem <script> -Tag einzufügen, das nur einen Funktionsaufruf enthält. Da jedes Skript global ausgewertet wird, muss die aufgerufene Funktion ebenfalls global sein.

    
Felix Kling 24.06.2012, 05:32
quelle
0

Warum nicht einfach:

%Vor%

Das wird mit der Funktionsskopierung umgehen und sieht viel einfacher aus

    
matt3141 24.06.2012 06:23
quelle
-1

Entfernen Sie ein Anführungszeichen von der aufgerufenen Methode, die funktioniert. Bitte überprüfen Sie den Code hier,

%Vor%

Probieren Sie diese Geige

aus     
Umesh Aawte 24.06.2012 04:53
quelle

Tags und Links