Ich habe den folgenden Webdienst;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
Es ist Standard, ohne Änderungen an den Klassendekorateuren.
Ich habe diese jQuery-Methode;
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
url: webMethod,
success: function(msg){ alert(msg.d); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
Es ist eine Post-Aktion, weil ich später Daten darauf posten muss.
Wenn ich jQuery ausführe, wird der Fehler "Kein Transport" zurückgegeben.
Eine Sache, die ich auch erwähnen sollte, ist, dass die jQuery in einer einfachen HTML-Datei auf meinem Computer gespeichert ist und der WebService auch auf meinem Computer ausgeführt wird.
Es gibt keinen Code auf der HTML-Seite, es ist einfach eine Webseite und kein AC # -Projekt oder so.
Kann mir bitte jemand hier die richtige Richtung weisen?
jquery
ajax
web-services
Griegs
quelle
quelle
Antworten:
Wenn Ihre jQuery-Seite nicht geladen
http://localhost:54473
wird, liegt dieses Problem wahrscheinlich daran, dass Sie versuchen, eine domänenübergreifende Anfrage zu stellen.Update 1 Schauen Sie sich diesen Blog-Beitrag an .
Update 2 Wenn dies tatsächlich das Problem ist (und ich vermute, dass dies der Fall ist), sollten Sie JSONP als Lösung ausprobieren. Hier sind einige Links, die Ihnen den Einstieg erleichtern könnten:
quelle
Füge das hinzu:
jQuery.support.cors = true;
Es ermöglicht Cross-Site-Scripting in jQuery (glaube ich, eingeführt nach 1.4x).
Wir haben eine wirklich alte Version von jQuery (1.3.2) verwendet und gegen 1.6.1 ausgetauscht. Alles funktionierte, außer .ajax () -Aufrufen. Das Hinzufügen der obigen Zeile hat das Problem behoben.
quelle
Ich hatte den gleichen Fehler auf einer Seite und fügte die folgenden Zeilen hinzu:
und es funktioniert endlich bei mir;) kein fehler mehr im IE9.
quelle
Keine der vorgeschlagenen Antworten hat für mich vollständig funktioniert. Mein Anwendungsfall ist etwas anders (ein Ajax-Zugriff auf eine S3 .json-Datei in IE9). Durch das Einstellen wurde
jQuery.support.cors = true;
derNo Transport
Fehler behoben, aber ich bekam ihn immer nochPermission denied
Fehler.Was für mich funktioniert hat, war die Verwendung von jQuery-ajaxTransport-XDomainRequest , um IE9 zur Verwendung von XDomainRequest zu zwingen. Für die Verwendung war keine Einstellung erforderlich
jQuery.support.cors = true;
quelle
Ich löse es mit dataType = 'jsonp' an der Stelle von dataType = 'json'.
quelle
Auch ich habe dieses Problem und alle oben genannten Lösungen sind entweder fehlgeschlagen oder aufgrund von Einschränkungen des Client-Webservices nicht anwendbar.
Zu diesem Zweck habe ich meiner Seite einen Iframe hinzugefügt, der sich auf dem Server des Clients befindet. Wenn wir also unsere Daten im Iframe und im Iframe veröffentlichen, werden sie im Webservice veröffentlicht. Daher entfällt die domänenübergreifende Referenzierung.
Wir haben eine 2-Wege-Ursprungsprüfung hinzugefügt, um zu bestätigen, dass nur autorisierte Seiten Daten zum und vom Iframe veröffentlichen.
Ich hoffe es hilft
quelle
Für mich ist das eine ganz andere Geschichte.
Da diese Seite ein gutes Suchmaschinenranking hat, sollte ich auch hier meinen Fall und die Lösung hinzufügen.
Ich habe
jquery
mich damit gebautwebpack
, nur die Module auszuwählen, die ich benutze. Der Ajax schlägt immer mit der Meldung "Kein Transport" als einzigem Hinweis fehl.Nach einem langen Debugging stellt sich heraus, dass das Problem
XMLHttpRequest
steckbar istjquery
und standardmäßig nicht enthalten ist.Sie müssen die
jquery/src/ajax/xhr
Datei explizit einschließen , damit der Ajax in Browsern funktioniert.quelle
Ich habe es einfach gelöst, indem ich die Domain aus der Anforderungs-URL entfernt habe.
quelle