我准备开始把头发拉出来了。试图在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。
答案 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”。