无法字符串化或解析JSON数据,AJAX请求

时间:2019-05-16 16:42:20

标签: javascript json

嗨,所以我试图获取两组JSON数据并将它们组合为一组数据,以便可以根据需要使用这些数据,但是,我遇到了一个小问题。

这是我的代码

<script>
  (function() {
    const jobPositions = document.getElementById('jobPositions');

    const jobs = $.ajax({
      dataType: "json",
      url: "https://www.welcomekit.co/api/v1/external/jobs?access_token=REDAC&organization_reference=REDAC&websites=true&status=published",
      success: function(result) {}
    });


    const jobDepartments = $.ajax({
      dataType: "json",
      url: "https://www.welcomekit.co/api/v1/external/departments?access_token=REDAC&organization_reference=REDAC",
      success: function(result) {}
    });

    $.when(jobs, jobDepartments).done(function(a1, a2) {
      var data = a1[1] + a2[1];

      $.each(JSON.stringify(data), function(i) {
        var start = i++;

        console.log(data);

        if (start) {
          $(jobPositions).append('\
          <a target="_blank" href="'+ a1.websites.url +'" class="jobPosition-item d-md-flex justify-content-between align-items-center flex-wrap">\
            <div>\
              <span class="jobPositions-name">' + a1.name + '</span>\
            </div>\
            <div class="right right-info d-flex align-items-center">\
              <span class="jobPositions-profession">' + a2.department_id + '</span>\
              <div class="d-flex">\
                <img src="/hubfs/www/about/white-icon-arrow.png" height="11" width="11" alt="arrow">\
              </div>\
            </div>\
          </a>\
          ');
        };
      });
    });
  })();
</script>

运行此命令时,我得到jquery-3.3.1.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in "successsuccess",因此将$.each(JSON.stringify(data), function(i) {更改为$.each(JSON.parse(data), function(i) {

我得到以下内容

VM1330:1 Uncaught SyntaxError: Unexpected token s in JSON at position 0

在这里对您的任何帮助或代码的改进将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

实际数据似乎包含在传递给完成函数的结构的第一个元素中。因此,通过稍微更改代码以定位每个a1和a2的第一个元素,它应该可以工作:

$.when(jobs, jobDepartments).done(function(a1, a2) {

  $.each(a1[0], function (i, item) {
    // get the department
    var dept = a2[0].find(jobDept => jobDept.id == item.department_id);
    // get its name
    var deptName = dept && dept.name || "Unknown Dept";

    console.log(deptName);

  });

});