我在asp.net 2.0应用程序上有一个简单的webmethod(使用1.0扩展而不是3.5 ajax扩展)。我正在尝试从jQuery调用该方法,当我这样做时,无数的例子显示在Internet上,在这里,我得到一个内部服务器错误消息返回。
这是我目前的代码:
[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);}
});
web服务也使用[ScriptService]
属性进行修饰。如果我注释掉contentType,将dataType更改为text,并将数据更改为查询字符串(name = value),我会正确地返回XML。
我哪里错了?
更新: 我正在使用jQuery v1.3.1并在IE6和Firefox 3中进行测试。我得到了一致的结果。
答案 0 :(得分:2)
这对我来说是一个愚蠢的错误。问题已经解决。虽然我包含了对AJAX Extensions的引用,但我忘了将ASMX服务的httphandler重写为ScriptHandlerFactory类。
添加此功能解决了这个问题。
由于我收到了一些询问示例或我如何解决问题的电子邮件,因此我写了一篇关于如何做这个汤的博客文章。
http://randomactsofcoding.blogspot.com/2009/03/jquery-json-and-asmx-20-services.html
答案 1 :(得分:0)
叶氏。您应该放弃ASMX for WCF。微软自己的推荐。我想这对你的问题没有帮助,但你最好考虑一下WCF,或者至少开始考虑这项技术。
答案 2 :(得分:0)
我遇到了同样的问题,但是当我将以下内容添加到代码文件
时,它已得到修复[System.Web.Script.Services.ScriptService]