我在 asp.net 2.0 应用程序上有一个简单的 webmethod(使用 1.0 扩展而不是 3.5 ajax 扩展)。我正在尝试从 jQuery 调用该方法,当我按照 Internet 和 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 更改为 text,并将 data 更改为查询字符串 (name=value),我会正确返回 XML。
我哪里错了?
更新:我正在使用 jQuery v1.3.1 并在 IE6 和 Firefox 3 中进行测试。我得到了一致的结果。