Frage

Ich habe eine einfache Webmethod auf einer asp.net 2.0-Anwendung (die 1.0-Erweiterungen nicht die 3.5 Ajax-Erweiterungen verwenden). Ich bin versucht, die Methode von jQuery zu nennen, und wenn ich es wie die unzähligen Beispielen zeige, auf dem Internet zu tun und hier auf SO, erhalte ich eine Internal Server Error Meldung zurückgegeben.

Hier ist mein aktueller Code:

[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string Select(string login)
{
    UserProfile profile = UserProfile.GetUserProfile(login);

    return "{ FirstName: '" + profile.FirstName + "', " +
             "LastName: '" + profile.LastName + "', " +
             "EmailAddress: '" + profile.EmailAddress + "', " +
             "PhoneNumber: '" + profile.PhoneNumber + "' }";
 }

Und nun die jquery:

$.ajax({
    type: "POST",
    url: "Services/ProfileService.asmx/Select",
    dataType: "json",
    data: "{'login':'DOMAIN%5CUSER1'}",
    contentType: "application/json; charset=utf-8",
    success: function(msg){ alert(msg); },
    error: function(xhr){ alert(xhr.statusText);}     
});

Der Webservice ist dekoriert mit dem [ScriptService] auch zuzuschreiben. Wenn ich die content Kommentar aus, ändern Sie den Datentyp Text, und die Daten ändern, um eine Abfrage-String (name = value) sein, erhalte ich die XML entsprechend zurückgegeben.

Wo soll ich denn falsch?

UPDATE: Ich bin mit jQuery v1.3.1 und Tests sowohl in IE6 und Firefox 3. Ich konsistente Ergebnisse bin immer.

War es hilfreich?

Lösung

Das war ein dummer Fehler meinerseits. Das Problem wurde gelöst. Während ich den Verweis auf die AJAX-Erweiterungen enthalten, ich habe vergessen, die Httphandler für ASMX Dienstleistungen für die ScriptHandlerFactory Klasse neu zu schreiben.

Das Hinzufügen dieser das Problem behoben.

Da ich einige E-Mails bekam erkundigen Beispiele oder wie ich das Problem behoben, ich schrieb eine Blog-Post darüber, wie diese Suppe zu den Nüssen zu tun.

http: //randomactsofcoding.blogspot .com / 2009/03 / jquery-json-and-asmx-20-services.html

Andere Tipps

Yeap. Sie sollten ASMX für WCF verlassen. Empfehlung von Microsoft selbst. Ich denke, es wird Ihnen nicht in Ihrem Problem helfen, aber Sie würden gut daran tun WCF zu prüfen, oder zumindest beginnen zu dieser Technologie zu suchen.

Ich hatte das gleiche Problem, aber es wurde festgelegt, wenn ich die folgenden in die Codedatei hinzugefügt

[System.Web.Script.Services.ScriptService]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top