Jquery-Erfolgsfunktion wird nicht mit JSONP ausgelöst
Mache ein paar spielen call my service auf einer anderen Domäne mithilfe von jQuery. Der Aufruf der service ist erfolgreich gemacht (meine debug-Punkt wird ausgelöst), und die richtige Antwort wird zurückgegeben (ich rieche den Verkehr).
Mein problem ist hauptsächlich, dass der Erfolg und Misserfolg Rückrufe nicht gefeuert. Ich habe einige andere Beiträge auf DAMIT anzugeben das error-Ereignis wird nicht ausgelöst, wenn mit JSONP. Ist das der Fall mit dem Erfolg der Veranstaltung, vielleicht, weil es wird davon ausgegangen, dass vermittele ich meine eigene callback-Funktion), wie gut, oder gibt es einen Weg, um das Feuer mein Erfolgs-callback. Vielen Dank im Voraus.
$.ajax({
type: "GET",
url: urlOnDiffDomain,
async: false,
cache: false,
dataType: 'jsonp',
data: {},
success: function(data, textStatus) {
alert('success...');
},
error: function(xhr, ajaxOptions, thrownError) {
alert('failed....');
}
});
InformationsquelleAutor der Frage Sanjay Uttam | 2010-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ordnung. Falls jemand wissen muss, um in die Zukunft...Im Nachhinein, die Lösung sollte wohl wurden offensichtlicher, als es war, aber Sie brauchen, um die web-Antwort-schreiben direkt in der Antwort stream. Einfach Rückgabe einen string mit JSON muss es nicht tun, werden Sie brauchen, um jemanden, konstruieren und übertragen Sie Sie zurück. Der code in meinem ursprünglichen post wird funktionieren, wenn Sie tatsächlich tun.
Beispiel der service-code:
Nur für den Willen des seins ausdrücklich, dies ist der clientseitige code.
Ob es einen besseren Weg, dies zu tun, bin ich alle Ohren. Für alle anderen, ich weiß, es gibt einige Konzept des native Unterstützung in WCF 4.0 für JSONP. Vielleicht möchten Sie auch, um ein wenig zu überprüfen aus Sicherheitsgründen - aber ich habe nicht viel untersucht.
InformationsquelleAutor der Antwort Sanjay Uttam
Den
success
callback-Methode wird aufgerufen, wenn der server antwortet. Die$.ajax
- Methode legt eine Funktion für die Verarbeitung der Antwort durch den Aufruf dersuccess
callback-Methode.Ist der wahrscheinlichste Grund, dass der
success
- Methode nicht aufgerufen wird, ist, dass die Antwort des Servers ist nicht korrekt. Die$.ajax
- Methode sendet den Wert in dercallback
Abfrage-Zeichenfolge, die der server verwenden soll als Funktion der Namen in der JSONP-Antwort. Wenn der server mit einem anderen Namen, die Funktion, dass die$.ajax
Methode eingerichtet hat, wird nie genannt.Wenn der server nicht verwenden, kann der Wert in der
callback
query-string um die Funktion Namen in der Antwort, die Sie angeben können, welche Funktion den Namen der$.ajax
Methode sollte erwarten, dass aus dem server. Fügen Sie die EigenschaftjsonpCallback
dem option-Objekt, und setzen Sie den Wert dem Namen der Funktion, die der server verwendet, die in der Reaktion.Wenn zum Beispiel die
$.ajax
Methode ist das senden einer Anfrage zu dem server mit der URLhttp://service.mydomain.com/getdata?callback=jsonp12345
sollte der server reagieren mit etwas suchen wie:Wenn der server ignoriert die
callback
query-string, und stattdessen antwortet mit etwas wie:Dann müssen Sie das überschreiben der name der Funktion durch hinzufügen einer Eigenschaft zu dem Objekt Optionen:
InformationsquelleAutor der Antwort Guffa
Versuchen
Funktioniert für mich, normalerweise. Sie müssen hinzufügen &callback=? zu urlOnDiffDomain, wo jQuery ersetzt automatisch die callback verwendet JSONP.
Den Fehler-Rückruf wird nicht ausgelöst, aber Sie können mit dem globalen $.ajaxError, wie diese
InformationsquelleAutor der Antwort
Dies ist keine vollständige Antwort auf deine Frage, aber ich denke, dass jemand, der vergeht würde gerne wissen:
Wenn Sie sich mit JSONP von WCF REST versuchen, Sie zu nutzen:
[JavascriptCallbackBehavior(UrlParameterName = "$callback")]
für Ihre service-Implementierung; dies sollte Ihnen JSONP-out-of-the-box.
InformationsquelleAutor der Antwort Learner
InformationsquelleAutor der Antwort Darkhan