Ajax请求中的jQuery Ajax请求无法正常工作

时间:2014-10-16 08:54:23

标签: javascript jquery ajax json git

编辑:它告诉我,我的李是非法令牌。仍然不知道该怎么做,因为我以为我在ul 中附加

所以我必须获取一些公共Github repos的JSON数组,并将每个repo的前10个提交中的标题,链接,描述和基本信息附加到页面。我已经拥有了标题,链接和描述,但是在提交提交时我迷失了方向。它们位于与初始信息不同的地址,因此我在第一个请求中提交了第二个ajax请求到提交地址,但没有任何工作。它可能只是一个语法错误或者我从广泛搜索中发现的东西,它可以嵌套ajax请求。

这是我的代码,切入每个单独的函数(为了匿名,我用'name'替换了组织名称):

主要功能:

function main() {
  $.ajax({
    type: 'GET',
    url: 'https://api.github.com/orgs/name/repos',
    error: function(xhr, status, error){
      //var err = eval("(" + xhr.responseText + ")");
      var err = JSON.parse(xhr.responseText);
      alert(err.Message);
    },
    complete: function(data){
      display_content(data);
    }
  });
}
main();

内容显示功能:

function display_content(_data){
  for (var i = 0; i < _data.responseJSON.length; i++) {
    $("#listing").append(
      "<h2>" +
        "<a href=\"" + _data.responseJSON[i].html_url + "\">" + _data.responseJSON[i].full_name + "</a></h2>" +
      "<p>" + _data.responseJSON[i].description +
        "<h3>Latest Commits</h3>" + 
        "<ul id= \"" + _data.responseJSON[i].name + "commits\">"
    );

    commits(_data.responseJSON[i].name);

    $('#listing').append(
        "</ul>" +
      "</p>" +
      "<br/>"
    );
  }
}

提交信息功能:

function commits(repo){
  $('#listing').find('h3').text("Latest Commits to user/" + repo);
  return $.ajax({
    type: 'GET',
    url: 'https://api.github.com/repos/user/' + repo + '/commits',
    error: function(xhr, status, error){
      //var err = eval("(" + xhr.responseText + ")");
      var err = JSON.parse(xhr.responseText);
      alert(err.Message);
    },
    complete: function(commit_data){
      for(var i = 0; i < 10; i++){
        $('#listing').append(
          "<li>
            <div>
              <img src=\"" + commit_data.responseJSON[i].author.avatar_url + "\"> 
              <a href=\"https://github.com/" + commit_data.responseJSON[i].author.login + "\">
                <b>" + commit_data.responseJSON[i].author.login + "</b>
              </a>
              <b>" + ($.timeago(commit_data.responseJSON[i].commit.committer.date)) + "</b><br />
              <i>SHA: " + commit_data.responseJSON[i].sha + "</i>
            </div>
            <a href=\"https://github.com/user/" + repo + "/commit/" + commit_data.responseJSON[i].sha + 
              "\" target=\"_blank\">" + commit_data.responseJSON[i].commit.message +
            "</a>
          </li>"
        );
      }
    }
  });
}

我知道这是很多代码,我提前道歉。我知道问题出在最后两个函数的某处,但我想要包含所有内容以确定。 如果有人有任何抓取和解析Git回购信息的经验,我会非常感谢任何建议。我愿意废弃所有内容并重新开始,如果需要这样做,但我想避免使用除jQuery之外的任何库。

感谢任何帮助过的人!我很感激。

1 个答案:

答案 0 :(得分:0)

  

它告诉我,我的李是非法令牌。仍然不知道该怎么办,因为我以为我正在追加到ul

您正在使用多行字符串文字来添加html。换行符需要转义,这可以通过反斜杠来完成。

更改为

function commits(repo){
  $('#listing').find('h3').text("Latest Commits to user/" + repo);
  return $.ajax({
    type: 'GET',
    url: 'https://api.github.com/repos/user/' + repo + '/commits',
    error: function(xhr, status, error){
      //var err = eval("(" + xhr.responseText + ")");
      var err = JSON.parse(xhr.responseText);
      alert(err.Message);
    },
    complete: function(commit_data){
      for(var i = 0; i < 10; i++){
        $('#listing').append(
          "<li>"+
            "<div>"+
              "<img src=\"" + commit_data.responseJSON[i].author.avatar_url + "\">"+
              "<a href=\"https://github.com/" + commit_data.responseJSON[i].author.login + "\">"+
                "<b>" + commit_data.responseJSON[i].author.login + "</b>"+
              "</a>"+
              "<b>" + ($.timeago(commit_data.responseJSON[i].commit.committer.date)) + "</b><br />"+
              "<i>SHA: " + commit_data.responseJSON[i].sha + "</i>"+
            "</div>"+
            "<a href=\"https://github.com/user/" + repo + "/commit/" + commit_data.responseJSON[i].sha + 
              "\" target=\"_blank\">" + commit_data.responseJSON[i].commit.message +
            "</a>"+
          "</li>"
        );
      }
    }
  });
}