如何使用ajax在github中获取json文件

时间:2017-07-20 03:02:19

标签: javascript jquery json ajax

我想用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");
    }
});

但我总是得到"错误"我检查网络,它获取数据 enter image description here

我该如何解决这个问题,谢谢!

5 个答案:

答案 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;
&#13;
&#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);
        }
    });

参考:jQuery returning "parsererror" for ajax request

答案 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>