JQuery ajax Aufruf httpget webmethod (c#) funktioniert nicht
Ich versuche zu bekommen eine ajax-get zu einer webmethod in code hinter. Das problem ist, ich erhalte die Fehlermeldung "parserror" aus dem jQuery - onfail
Methode.
Wenn ich die BEKOMMEN ein POST alles funktioniert einwandfrei. Bitte siehe meinen code unten.
Ajax-Call
<script type="text/javascript">
var id = "li1234";
function AjaxGet() {
$.ajax({
type: "GET",
url: "webmethods.aspx/AjaxGet",
data: "{ 'id' : '" + id + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(msg) {
alert("success");
},
error: function(msg, text) {
alert(text);
}
});
}
</script>
Code Hinter
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod(UseHttpGet = true,
ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public static string AjaxGet(string id)
{
return id;
}
Web.config
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
Der URL verwendet wird
......../webmethods.aspx/AjaxGet?{%20%27id%27%20:%20%27li1234%27}
Als Teil der Reaktion ist die Rückkehr der html-Code für die Seite webmethods.
Jede Hilfe wird sehr geschätzt.
InformationsquelleAutor Tim Jarvis | 2010-04-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bevor alle könnte ich sagen, dass Sie nicht die einfachste Art und Weise. ScriptMethods ist einfach zu bedienen zusammen mit ASP.NET ScriptManager-Steuerelement und das nicht mit jQuery. Ich werde empfehlen, verwenden Sie besser JSON-fähigen WCF-HTTP-Diensten (besser als Erholsamen Dienst) anstelle von ASMX-Webservice, die Sie versuchen zu verwenden, jetzt.
Dennoch kann man Sie macht-code zu arbeiten, ohne Microsoft-Technologien auf der client-Seite.
Zunächst überprüfen Sie Server-Seite.
Stellen Sie sicher, dass Sie Innerhalb von \ und ein HttpHandler für asmx-Erweiterung (ScriptHandlerFactory) gibt es auch in der config:
Stellen Sie sicher, dass [ScriptService] - Attribut ([System.Web.Script.Services.ScriptService] wenn Sie wie volle Namen) legen Sie für Ihre Klasse geerbt von System.Web.Services.WebService.
Nun konnte man den Dienst testen. Öffnen Sie in Ihrem Web-Browser die URL wie http://localhost/webmethods.asmx/AjaxGet?id=li1234
Wenn Sie zurück bekommt, so etwas wie
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">li1234</string>
Können Sie sicher sein, dass Sie service-Teil funktioniert gut.
Bemerkung: Independ auf “ResponseFormat = System.Web.Script.Services.ResponseFormat.Json" - Attribut der service-Antwort mit dem XML-Antworten, wenn "Content-Type:application/json;" nicht in die Anfrage.
Gehen wir jetzt mal fix den client-code. Ich hoffe, dass die Kommentare, die ich platziert den folgenden code erklären.
Noch eine kleine Bemerkung. Im letzten Teil wird der code rufe ich eine "komplexere" web-Methode:
Wo
Nun nur JavaScript-code, die in einigen Orten JSON-plugin, welches ersetzt werden könnte, mit Crockford ' s json2.js wenn jemand es lieber.
asmx
web-services, aber ist es möglich, diese Arbeit zu machen, wenn die WebMethod ist in einemaspx
- Datei?Alles ist möglich, aber ich weiß nicht den Grund verstehen. aspx verwendet werden, für die Allgemeine HTML-Pager oder für web-Formulare. So ist die entsprechenden Handler wird verwendet, um die Anforderung an den URL. So ist die Nutzung von Datei-Erweiterung ist wirklich praktisch. Sie können ASHX, um die Erstellung von Allgemeinen behandelt, die Prozess-Allgemeine HTTP-Anfrage und die nicht über eine UI-oder HTML-markup.
InformationsquelleAutor Oleg
Ich kam hierher auf der Suche nach der Antwort... Für die anderen, hier die Antwort.
(Aus https://stackoverflow.com/a/2397521)
InformationsquelleAutor user3927354
Daten ist ein Objekt, kein string, das aussieht wie ein Objekt.
Wenn Sie eine Zeichenfolge verwenden, es muss eine ordnungsgemäß formatierte URL-query-string, etwa so:
Oh, jetzt sehe ich Sie. Der Content-Type von Ihrem GET-Anforderung ist nicht als JSON. Lassen Sie einfach, dass die parameter nicht vollständig. Die reaktionsart ist JSON, so dass der Datentyp parameter ist okay.
Danke, ich bin jetzt nicht immer ein Fehler, jetzt obwohl es nicht zu schlagen, meine webmethod-obwohl, es wird zurückkehren, um den Erfolg der Funktion. In der Antwort bekomme ich nur den html-von webwethods. Sorry, Schmerzen, bitte helfen.
InformationsquelleAutor Tomalak
Sie könnten auch check out http://www.json.org/js.html JSON.stringify wo es nimmt ein json-Objekt als parameter und gibt einen string zurück.
InformationsquelleAutor Milo Cabs
Für diejenigen, die mit VB, schmücken Sie Ihre Methode so:
InformationsquelleAutor Chris Barr