我想用ajax在github中获取一个json文件,我写了这段代码:
$.ajax({
url: "https://rawgit.com/nianyuyu/play_javascript/master/1.json",
type:"get",
dataType:'json',
success: function(data){
console.log(data);
},
error:function() {
console.log("err");
}
});
我该如何解决这个问题,谢谢!
答案 0 :(得分:2)
由于您已在请求中包含dataType:'json',
,因此jQuery将验证返回的JSON。在这种情况下,返回的JSON在正文的末尾有一个分号,它不是有效的JSON。
{
"name":"Bill Gates",
"street":"Fifth Avenue New York 666",
"age":56,
"phone":"555 1234567"
};
删除分号以防止调用错误处理程序。
答案 1 :(得分:1)
基于错误 parsererror ,网址似乎没有返回有效的JSON,而调用期望它是JSON(dataType: 'json'
)
您可以告诉jQuery将其解析为文本(使用dataType: 'text'
),然后使用JSON.parse
手动将其转换为JSON。
在解析之前,您必须删除最后一个;
。
另外,您可以使用传递给错误回调的参数来打印错误。
固定代码:
$.ajax({
url: "https://rawgit.com/nianyuyu/play_javascript/master/1.json",
type: "get",
dataType: 'text',
success: function(response) {
if (!response)
return;
response = response.slice(0, -1); // trim ";" at the end
var data = JSON.parse(response); // convert to object
console.log(data);
},
error: function(err) {
console.log(err);
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:1)
我认为你得到一个导致问题的解析错误,你可以修复json响应,或者你可以从你的请求中删除数据类型json。 如果您的json响应无效且您正在使用 dataType:&#39; json&#39; ,则会出现解析错误。您可以更改 dataType:&#39; text&#39;
$.ajax({
url: "https://rawgit.com/nianyuyu/play_javascript/master/1.json",
type:"get",
dataType: 'text',
error: function(data){
//debugger;
alert('err');
},
success:function(data) {
alert(data);
}
});
答案 3 :(得分:1)
1.json文件不正确。最后有一个半冒号。删除那个半结肠,它会正常工作。
如果您无法访问该文件,则可以使用以下代码。
$.ajax({
url: "https://rawgit.com/nianyuyu/play_javascript/master/1.json",
type:"get",
dataType:'text',
success: function(data){
console.log(JSON.parse(data.substring(0, data.length - 1)));
},
error:function() {
console.log("err");
}
});
这里我基本上得到字符串并修剪它的最后一个字符,然后将字符串解析回JSON对象。
答案 4 :(得分:1)
您收到错误的数据是因为您希望获得 JSON 响应,而实际响应不是有效的JSON 。
最后有分号,它会生成无效的JSON 。
尝试将 dataType作为文字。在这里,您将使用示例https://jsfiddle.net/sfjxsdsx/1/
$.ajax({
url: "https://rawgit.com/nianyuyu/play_javascript/master/1.json",
type:"get",
dataType:'text',
success: function(data){
console.log(data);
},
error:function() {
console.log("err");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>