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 の両方でテストしています。一貫した結果が得られています。