2017-07-13 7 views
0

Ich benutze jQuery für GET-Anfrage und erhalten eine Antwort im JSON-Format. Aber wenn ich versuche, es zu verwenden, wird unterhalb der Fehlermeldung in der Browser Developer Tools-Konsole angezeigt.Ajax get mit jsonp gibt "SyntaxError: fehlende; vor Anweisung" Fehler

SyntaxError: missing ; before statement[Learn More] hosts:1:10 >>

Unten ist mein Code.

+1

Der Fehler bedeutet, dass Sie keine gültigen JSONP-Daten zurück erhalten. Beachten Sie, dass JSON und JSONP nicht austauschbar sind. Wenn Sie also JSONP verwenden, um einen CORS-Fehler zu umgehen, müssen Sie zuerst größere Probleme beheben. Beachten Sie auch, dass "async: false" ist schrecklich Praxis und sollte entfernt werden –

+0

@RoryMcCrossan, ich bin ziemlich neu zu jquery und Javascript, ich habe versucht, "Json" als Datentyp zu verwenden, aber bekam '400 Falsche Accept Header' Fehler. Könnten Sie bitte beraten, wie kann ich das in geeigneter Weise lösen? –

+1

In diesem Fall sollten Sie wieder in das JSON-Format wechseln. Das Problem besteht darin, wie Sie sich beim Server authentifizieren. Damit können wir nicht wirklich weiterhelfen –

Antwort

1

Dieser Fehler tritt auf, wenn die Antwort des Servers nicht im gültigen JSONP-Format vorliegt. Um die Dinge auf Sie zu löschen, ist JSONP nicht JSON. Es ist JavaScript-Skript, das Sie sagen können. Wenn Sie sagen, verwenden Php dann php ausgeben sollte wie folgt aus:

 header("Content-Type: application/json");  
    exit("mycallback(".json_encode(['error' => 0,'auth_token' => $_COOKIE['server_token']]).")"); 

Sie sehen, dass PHP-Code einen String ausgibt, die JavaScript-Funktionsaufruf mit json formatierten Daten als Parameter hat. Jetzt im Ajax Call solltest du alles stream-lined haben. Ajax-Anruf sollte so sein:

 $.ajax({ 
     url:'http://ssoidpclient.local/get_auth_token', 
     dataType: 'jsonp', 
     jsonp: false, 
     jsonpCallback: 'mycallback', 
     success:function(data) 
     { 
     } 

    }); 
Verwandte Themen