jQuery $.ajax 错误 : Parsing JSON Request failed with valid JSON?

标签 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 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吗?是,然后更改 dataType:'jsonp'

编辑

创建错误处理程序

$.ajax({
    url: 'localhost:39657/List/' + $(this).val(),
    dataType: "json",
    success: function(json) {
           alert("success");
    },
    error:function(xhr){
        console.log(xhr.responseText);
    }
});

看看它是否命中成功处理程序或错误处理程序以及它给出什么错误消息?我不认为 json 解析有问题,因为它是有效的 json 并且解析得很好 look here


根据您遇到的评论推断 CORS blues,作为一项安全功能实现,以防止跨站点脚本攻击 您不能仅在客户端将 dataType 设置为 jsonp 来使用 jsonp,服务器端也必须配置,如果它是 Web 服务,您可以设置响应 header 以允许跨域资源共享

var resp = new HttpResponseMessage();
resp.Headers.Add("Access-Control-Allow-Origin","*");

或者,您可以创建一个服务器端代理,并让该代理调用您的其他项目(无论是 Web 服务还是 Web 应用程序),然后将收到的响应返回给客户端

关于jQuery $.ajax 错误 : Parsing JSON Request failed with valid JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339449/

相关文章:

javascript - 以编程方式选择 jQuery 按钮集中的 radio 使其崩溃

ruby-on-rails - Rails 设计多态 - 使用 Ajax 获取部分渲染

javascript - 循环遍历 JSON 并在 HTML 表格中显示每个数组项

php - JSONP 没有给出任何响应

java - 为抽象类创建 Read[T] 和 Write[T]

javascript - 悬停时在 td 中显示图像

jquery - 返回错误并在ajax中查看

javascript - 如何使用ckeditore使用ajax发送数据?

c# - 对非转义字符有什么作用?

javascript - 我如何在 jQuery 中做到这一点?在 $ 中传递选择器而不是 jQuery 对象的任何技巧