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

时间:2009-03-03 20:25:02

标签: jquery ajax asmx

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

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]