从jquery调用ASMX Web方法我在哪里出错?

我在asp.net 2.0应用程序上有一个简单的webmethod(使用1.0扩展而不是3.5 ajax扩展)。 我试图从jQuery调用该方法,当我这样做时,因为无数的例子在互联网上显示,在这里,我得到一个内部服务器错误消息返回。

这是我目前的代码:

[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中进行测试。我得到了一致的结果。

这对我来说是一个愚蠢的错误。 问题已经解决。 虽然我包含了对AJAX Extensions的引用,但我忘了将ASMX服务的httphandler重写为ScriptHandlerFactory类。

添加此解决了问题。

由于我收到了一些电子邮件询问示例或我如何解决问题,我写了一篇关于如何做这个汤的博客文章。

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

叶氏。 您应该放弃ASMX for WCF。 微软自己的推荐。 我想它对你的问题没有帮助,但你最好考虑WCF或至少开始研究这项技术。

我遇到了同样的问题,但是当我将以下内容添加到代码文件中时,它已得到修复

[System.Web.Script.Services.ScriptService]