jquery 1.6.2 ajax对aspx方法的请求总是返回parsererror

时间:2011-07-03 00:11:40

标签: jquery asp.net ajax

我准备开始把头发拉出来了。试图在Firefox中使用jquery ajax请求从我的代码后面的方法返回简单的字符串。无论我尝试什么,我总是得到parsererror - 意外的角色。我根据我在网上找到的演示尝试了至少十几个不同的版本,没有用。

 $.ajax({
                type: 'POST',
                url: '/Search/BasicSearch.aspx/sayHello',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: '{}',
                success: function (msg) {
                    alert(msg.d);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(textStatus + '  ' + errorThrown);
                }
            });

- 方法背后的代码

[WebMethod]
        public static string sayHello()
        {
            return "hello world";
        }

我已经尝试在此方法中返回格式正确的json字符串,但仍无效。

编辑:我忘了提到这个站点将在.NET 2.0上运行。在尝试下面的Will建议未能成功将响应格式设置为JSON之后,我想我会尝试一个简单的'通用处理程序,看看会发生什么。果然,它奏效了。

公共类Handler1:IHttpHandler {

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "application/json";
    context.Response.Write("{\"\": \"hello world\"}");
}

public bool IsReusable
{
    get
    {
        return false;
    }
}

}

所以我假设它是.NET 2.0 aspx页面的根本问题???我认为我见过的所有例子都至少使用3.0。

3 个答案:

答案 0 :(得分:2)

尝试一下它会起作用。

由于你的返回类型不是纯粹的json,或者它认为这是失败的原因,

删除数据类型:json并试一试,它应该可以正常工作

$.ajax({
                type: 'POST',
                url: '/Search/BasicSearch.aspx/sayHello',
                contentType: "application/json; charset=utf-8",
                data: '{}',
                success: function (msg) {
                    alert(msg.d);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(textStatus + '  ' + errorThrown);
                }
            });

答案 1 :(得分:1)

试试这个:

return '{"": "hello world"}';

答案 2 :(得分:1)

在解决了这个问题之后,我找到了解决方案:

您告诉您的AJAX调用响应是JSON格式,这是不正确的:

contentType: "application/json; charset=utf-8", 
dataType: "json",

.NET Web服务不以JSON响应(至少没有配置它们)。删除dataType并将contentType设置为“charset = utf-8”。