Rufen Sie die OData-Service mit JQuery, Ajax und JSONP
Ich versuche, rufen Sie einen OData-service mit JQuery $.ajax und laufen in einige Probleme.
Wenn ich den service rufen mit dataType: "jsonp", erhalte ich den status code 200 und die Daten, die ich brauche, aber es fällt in meine JQuery-Fehler: Funktion(Daten)
Wenn ich den service rufen mit dataType: "json", ich bekomme nichts, der Aufruf der Dienst wird auch nicht passieren.
Hier ist meine .ajax-Aufruf:
$.ajax({
beforeSend: function(request) {
request.setRequestHeader("Accept", "application/json;charset=utf-8");
},
type: "GET",
url: this.uri + filter,
dataType: "jsonp",
success: function(data) {
//I never get here but in fiddler I get a 200 status code
},
error: function(data) {
//This works and gives me the data but it's in the JQuery error handler
//$.parseJSON(data.responseText)
}
});
Ich habe versucht mehrere Variationen "jsonp: "false", "Rückruf", etc und ohne Erfolg. Ich sollte auch erwähnen, dass die website und die odata-webapi auf dem gleichen server, aber Zugriff auf die website über https und dann die ajax-client ruft den Dienst via http.
Wäre jeder in der Lage sein, mir zu sagen, wohin ich gehe falsch gemacht?
Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist sehr möglich, dass Sie anrufen, ein OData-Dienst, der bereits unterstützt CORS. Das bedeutet, dass Sie nicht brauchen, um anzugeben, verwenden JSONP in Ihrer Anfrage. Wenn die Antwort mit dem status-code 200, dass Sie bekommen haben-header "Access-Control-Allow-Origin: xxx", sind Sie wahrscheinlich zu sprechen, um diese Art von service.
Versuchen, verwenden Sie einfach die folgende ajax-Aufruf:
Und Sie können finden die Daten im alert-Fenster.
Nach unzähligen Stunden Aufwand habe ich es endlich auf Arbeit durch überspringen von JQuery und über xmlhttprequest-Objekt, hier mein funktionierenden code:
var uri = this.uri + filter;
Habe ich mir Stücke aus, die überall im web, so dass andere verdienen Anerkennung.
Dies ist für die Verwendung auf einem lokalen intranet mit IE nur, wenn jemand einen anderen Vorschlag, den ich ausprobieren kann oder einen besseren Weg, dies zu tun, ich würde schätzen Ihr feedback.
Danke!