jQuery$.ajax错误:解析JSON请求失败,是否使用有效的JSON?
我有一个简单的ajax调用:jQuery$.ajax错误:解析JSON请求失败,是否使用有效的JSON?,jquery,ajax,json,rest,json.net,Jquery,Ajax,Json,Rest,Json.net,我有一个简单的ajax调用: $.ajax({ url: 'http://localhost:39657/List/Receptacle', dataType: "json", success: function(json) { alert("success"); } }); 在Fiddler中,整个回答是: HTTP/1.1 200 OK Server: ASP.NET Development Server/10.0.0.0 Date: Sat, 18 Feb 201
$.ajax({
url: 'http://localhost:39657/List/Receptacle',
dataType: "json",
success: function(json) { alert("success"); }
});
在Fiddler中,整个回答是:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Sat, 18 Feb 2012 07:39:11 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 97
Cache-Control: private
Content-Type: application/json; charset=utf-8
Connection: Close
[{"Selected":false,"Text":"ABC","Value":"3"},{"Selected":false,"Text":"XYZ","Value":"4"}]
所以它似乎起了作用,但我没有得到任何警告
我做错了什么?为什么我的JSON没有解析?谢谢。为什么在url的末尾有“?callback=?”
?是jsonp吗?是,然后更改数据类型:“jsonp”
编辑
创建一个错误处理程序
$.ajax({
url: 'localhost:39657/List/' + $(this).val(),
dataType: "json",
success: function(json) {
alert("success");
},
error:function(xhr){
console.log(xhr.responseText);
}
});
查看它是命中成功处理程序还是错误处理程序,以及它会给出什么错误消息?我不认为json解析有什么问题,因为它是有效的json,并且被解析得很好
从您的评论中可以推断出,这是一种安全功能,用于防止跨站点脚本攻击 您不能仅通过在客户端将数据类型设置为jsonp来使用
jsonp
,还必须配置服务器端,如果它是一个web服务,您可以通过设置响应头来允许跨域资源共享
var resp = new HttpResponseMessage();
resp.Headers.Add("Access-Control-Allow-Origin","*");
或者,您可以创建服务器端代理,让该代理调用您的其他项目(无论是web服务还是web应用程序),然后将收到的响应返回到客户端。您必须在服务器端执行以下操作:
HttpResponseMessage m = new HttpResponseMessage(HttpStatusCode.NotFound);
m.Content = new StringContent("oops");
throw new HttpResponseException(m);
被调用的URL是什么?请发布整个URL,您可能访问了不正确的URL。Tadeck,URL很好,我正在看着响应返回Fiddler。您使用的是什么版本的jquery?一两天前,我在使用上一个Jquery版本时出现了类似这样的奇怪行为为什么不尝试使用?@neoascetic:getJSON()只是带有JSON响应格式的get()的缩写。我更新了它(编辑反映了更改),但仍然没有收到警报,响应是相同的。它正在命中错误处理程序,但是xhr.responseText只是一个空字符串。有点不对劲json解析没有问题,我怀疑您正在跨域问题中运行。。。尝试从浏览器地址栏访问相同的url,查看是否返回结果,同时尝试使用url
/List/+$(this).val()
删除本地主机,porturl在浏览器中工作正常-现在我甚至在中有一个硬编码的url(在上面的解释中更新)。我正在观看fiddler,请求与上面完全相同。它们是独立的项目,所以它们在不同的端口上运行-这就是为什么我认为我可能需要jsonp?请解释为什么。OP问他做错了什么,为什么他的JSON没有解析。仅仅源代码是不够的。