Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery$.ajax错误:解析JSON请求失败,是否使用有效的JSON?_Jquery_Ajax_Json_Rest_Json.net - Fatal编程技术网

jQuery$.ajax错误:解析JSON请求失败,是否使用有效的JSON?

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调用:

$.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没有解析。仅仅源代码是不够的。