0

asp.net 2.0 アプリケーションで単純な webmethod を使用しています (3.5 ajax 拡張機能ではなく 1.0 拡張機能を使用しています)。私はjQueryからメソッドを呼び出そうとしていますが、インターネットやSOで無数の例が示すように呼び出すと、内部サーバーエラーメッセージが返されます。

これが私の現在のコードです:

[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 + "' }";
 }

そして今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);}     
});

[ScriptService]Web サービスも属性で装飾されています。contentType をコメントアウトし、dataType をテキストに変更し、データをクエリ文字列 (name=value) に変更すると、XML が適切に返されます。

どこが間違っていますか?

更新: jQuery v1.3.1 を使用し、IE6 と Firefox 3 の両方でテストしています。一貫した結果が得られています。

4

3 に答える 3

2

これは私の愚かな間違いでした。問題は解決されました。AJAX 拡張機能への参照を含めましたが、ASMX サービスの httphandler を ScriptHandlerFactory クラスに書き直すのを忘れていました。

これを追加すると問題が解決しました。

例や問題の修正方法について問い合わせるメールをいくつか受け取ったので、このスープをナッツにする方法についてブログ投稿を書きました。

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

于 2009-03-03T21:03:45.107 に答える
0

私は同じ問題を抱えていましたが、コードファイルに以下を追加すると修正されました

[System.Web.Script.Services.ScriptService]

于 2011-12-07T05:54:09.227 に答える