【发布时间】:2011-07-03 00:11:39
【问题描述】:
我已经准备好开始在这里拉头发了。尝试在 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 失败后,我想我会尝试一个普通的 'ol 通用处理程序,看看会发生什么。果然,成功了。
公共类 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。
【问题讨论】:
-
您是否尝试将 ScriptMethod 属性添加到 sayHello 方法?默认情况下,Web 方法是 SOAP 调用,返回 XML。例如
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true, XmlSerializeString = false)] -
啊,ScriptMethod 仅在 3.5+ 中受支持。您需要安装 3.5(向后兼容 2.0),或者解决这个问题,可能正如您使用 HttpHandlers 所展示的那样。其他热门歌曲:stackoverflow.com/questions/288850/…、codeproject.com/KB/webservices/jsonwebservice.aspx、encosia.com/…
-
@user ,我前几天也遇到了同样的问题,主要是你返回的类型,请确保你返回的类型是纯json。
-
您可以在 2.0 中进行这项工作,但您需要安装 ASP.NET AJAX 扩展(直到 3.5 才捆绑)并修改您的 web.config 以使用它。一些信息和下载链接,尽管我认为您可能还需要 web.config 中的 HttpModule 项以用于 ASPX 页面方法:encosia.com/…