ASP .NET: kann Nicht aufrufen, Seite WebMethod mit jQuery
Erstellte ich eine WebMethod in der code-behind-Datei von meiner Seite als solche:
[System.Web.Services.WebMethod()]
public static string Test()
{
return "TEST";
}
Habe ich die folgende HTML-Seite um es zu testen:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"/></script>
<script type="text/javascript">
function test() {
$.ajax({
type: "POST",
url: "http://localhost/TestApp/TestPage.aspx/Test",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "text",
success: function(msg) {
alert(msg.d);
}
});
}
</script>
</head>
<body>
<button onclick="test();">Click Me</button>
</body>
</html>
Wenn ich auf die Schaltfläche klicke, die AJAX löst, aber nichts zurückgegeben. Wenn ich meine debug-code, die Methode Test()
gar nicht aufgerufen. Irgendwelche Ideen?
InformationsquelleAutor John | 2010-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen
oder was auch immer die relative url, die auf Ihrer Seite.
Können Sie versehentlich zu verletzen same-origin-policy.
Auch, obwohl Sie es noch nicht sind, Sie erwarten ein d: wrapped-Objekt. Wie es ist, Sie sind nur gehen, um eine Zeichenfolge.
Sollte dies erhalten Sie, wo Sie gehen wollen.
dataType
war Teil des Problems, also gab ich jedem eine Stimme, die antwortete auf das Teil. Letztlich kam es zu versehentlich verletzt die same-origin-policy, das ist der Grund, warum ich markiert dies als die Lösung. Vielen Dank nochmal allen. Schätzen Sie es!glücklich zu helfen.
InformationsquelleAutor Sky Sanders
Ich denke, Datentyp sollte "json". Fügen Sie eine Fehler-Funktion, um zu sehen, welche Fehler status, den Sie zurück bekommen, dh 404 nicht gefunden 500 server Fehler usw usw
InformationsquelleAutor James Westgate
Ich diese javascript-Funktion aufrufen, WebMethods mit jQuery:
$.toJson Serialisierung erfolgt mittels jquery.json-plugin 1.3.
Und wie Sie sehen können, Datentyp muss "json"
InformationsquelleAutor Petr Kaleta
müssen Sie Test() accept/allow POST
InformationsquelleAutor CurlyFro
Wenn die PageMethods sind ordnungsgemäß registriert auf Ihrer Seite, Sie sollten in der Lage sein, Sie zu nennen, die mit einem Microsoft registriert aufgerufene Objekt PageMethods.
Javascript sollte ausgeführt werden, nachdem Sie die aspx-Seite geladen wurde, werden alle Microsoft-spezifischen Bibliotheken. Wenn diese geladen sind, könnten Sie rufen Sie Ihren PageMethod diese Weise:
PageMethods.Test(Funktion() OnSucceeded{}, function() OnFailed{});
Hier ist ein link zu besseren Beispiele:
http://www.junasoftware.com/blog/using-jquery-ajax-and-page-methods-with-a-asp.net-webservice.aspx
Wenn Sie nicht bereits haben, empfehle ich mit Firebug zu Debuggen diese client-Anrufe. Firebug gibt Ihnen alle Informationen, die Sie benötigen, um zu bestimmen, was wirklich Los ist.
getfirebug.com
OK, fair genug. Es Klang für mich so, er war auf der Suche nach einem Weg, damit es funktioniert, und ich eine alternative. Ich bin damit einverstanden, dass MsAjax ist nicht erforderlich zu machen, damit es funktioniert, aber es wäre verfügbar und könnte eine sinnvolle alternative sein. Die Frage ist speziell darauf hinweisen, dass jQuery im Einsatz ist, aber nicht, wo nicht sagen, dass jQuery verwendet werden.
Tut mir Leid, Jeremy. Ich hätte mehr klar, aber ja, es hat über jQuery. Ich werde auf jeden Fall halten Sie Ihre Antwort im Hinterkopf, obwohl, wenn ich entscheiden, zu gehen, die MsAjax route in die Zukunft.
Ich aint mad atcha, nur Erhebung einige newb Steuer zu erhalten, die Sie vorbereitet haben. Sie erhalten den Dreh. Als Kontext, betrachten Sie dieses: ich Frage, wie ein problem zu lösen, ich habe in C# und Sie Antworten, 'Hey, Sie könnte dazu in Ruby, wie diese...' - ich ziehe diese parallele zu helfen, Sie verstehen, warum ich downvoted. p.s. don ' T mind me, ich bin nur ein Alter Griesgram.
InformationsquelleAutor Jeremy