2012-05-08 8 views
18

Zuerst habe ich nach der Antwort auf mein Problem in mehreren Themen gesucht und ich konnte keine Lösung finden, die mit meinem Code funktioniert.

Ich versuche, die Antwort von einem Servlet zu bekommen, wenn ich http://XXXZZZ/Servlet/Login?login=pepe&pass=1234 gehen JSON Ich erhalte gültig wie erwartet:

{"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"} 

Aber wenn ich das gleiche versuchen mit $ Schnipsel, erhalte ich zwei Fehler .

$.ajax({ 
    type : "Get", 
    url :"http://XXXZZZ/Servlet/Login", 
    data :"login="+login+"&password="+pass, 
    dataType :"jsonp", 
    success : function(data){ 
    alert(data);}, 
    error : function(httpReq,status,exception){ 
    alert(status+" "+exception); 
    } 
}); 

erster Fehler (im Popup-Fenster):

parsererror Error: jQuery17104145435250829905_1336514329291 was not called 

Zweiter Fehler (in der Chrome-Konsole):

Uncaught SyntaxError: Unexpected token : Login 1 

(Und es gibt die JSON Ich warte auf).

P.S. Ich muss dataType verwenden: "jsonp", denn wenn ich "json" verwende, habe ich auch Probleme mit der Cross-Domain.

+0

Was ist die Fehlerfunktion für? – adeneo

+1

Sie können * JSONP * nicht erzwingen. Es muss vom Server unterstützt und zurückgegeben werden. Wenn nicht, hast du kein Glück. Wenn Sie die Kontrolle über den Server haben, unterstützen Sie JSONP. –

+0

Ich programmiere auch den Server;) –

Antwort

10
succes : function(data){ 

Das ist ein Tippfehler:

success : function(data){ 
+8

+1 für Adleraugen. – undefined

+0

Nein, sorry ich schrieb es falsch hier, in den Code seiner geschrieben "Erfolg" –

1

First off Sie einen Tippfehler in Ihren Erfolg Parameter haben; Du hast das Ende verpasst. Wenn Sie eine JSONP-Anfrage ausführen, müssen Sie Ihre JSON-Informationen im JSONP-Format zurückgeben. Das sollte das Callback-Token als Teil der Rückgabezeichenfolge enthalten. Eine Probe JSONP Zeichenfolge aussehen würde, mag dies:

yourcallbacktoken({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"}) 

für weitere Informationen über die JSONP Spezifikationen auf dieser Seite Werfen Sie einen Blick: http://devlog.info/2010/03/10/cross-domain-ajax/

20

Wenn Sie JSONP dann die Syntax falsch verwenden ist

Sie müssen

myJsonMethod({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"}); 

zurückkehren und auch auf Ihre ajax-Request-Optionen hinzufügen

jsonp: false, 
jsonpCallback: "myJsonMethod" 

so

$.ajax({ 
    type : "Get", 
    url :"http://XXXZZZ/Servlet/Login", 
    data :"login="+login+"&password="+pass, 
    dataType :"jsonp", 
    jsonp: false, 
    jsonpCallback: "myJsonMethod", 
    success : function(data){ 
     alert(data);}, 
    error : function(httpReq,status,exception){ 
     alert(status+" "+exception); 
    } 
}); 

(und Gängen beheben die success als @voyager angegeben)

+0

So in dem Server ich habe 'statische JSONObject Anmeldung ändern (String Login, String Kennwort) JSONException wirft {' zu ' static String Login (String-Anmeldung, String-Passwort) { ... json.put ("id", id); json.put ("Anmelden", Anmelden); json.put ("Schlüssel", Schlüssel); return ("myJsonMethod (" + json + ");"); ' –

+0

@PabloPostigo, Sie können die [' JSONPObject' Klasse] (http://jackson.codehaus.org/1.5.3/javadoc/org/codehaus) verwenden /jackson/map/util/JSONPObject.html) –

+0

hatte ein ähnliches Problem. jsonp: false hinzuzufügen, was für mich die Dinge reparierte – Luke

Verwandte Themen