首页 > 解决方案 > 未捕获的类型错误:无法读取 AJAX 对象上未定义的属性“地图”

问题描述

如果没有结果,有没有办法可以将 N/A 作为默认值传递?如果标题上的映射对象为空,我希望能够将其定义为“N/A”。

有些商品正在Media_x0020_Specialist_x0028_s_x.results退货,但有些商品没有退货,我收到了这个错误。

代码:

  $.ajax({
    url: requestUri,
    type: "GET",
    dataType: "json",
    cache: false,
    headers: {
      accept: "application/json; odata=verbose"
    },
    success: function success(data) {
      onSuccess(data);
      ExportTable();
    }
  });

  function onSuccess(data) {
    var item = data.d.results;
    for (var i = 0; i < item.length; i++) {
      tableContent += "<tr>";
      tableContent +=
        "<td>" +
        item[i].Franchises_x0020_with_x0020_Shar.results
          .map(function(r) {
            return r.Title;
          })
          .join("; ") +
        "</td>";
      tableContent +=
        "<td>" + item[i].Stand_x0020_Alone_x0020_Franchis + "</td>";
      tableContent +=
        "<td>" +
        item[i].Franchise_x0020_Liason.results
          .map(function(r) {
            return r.Title;
          })
          .join("; ") +
        "</td>";


      tableContent +=
        "<td>" +
        item[i].Media_x0020_Specialist_x0028_s_x.results
          .map(function(r) {
            return r.Title;
          })
          .join("; ") +
        "</td>";

      tableContent += "</tr>";
      tableContent += "</tbody></thead>";
    }
    $("#title").append(tableContent);
  }

这是错误: 在此处输入图像描述

标签: javascriptjquerypnp-js

解决方案


您可以使用三元运算符并对每个项目重复此操作:

(item[i].Franchises_x0020_with_x0020_Shar.results ?          
   item[i].Franchises_x0020_with_x0020_Shar.results
      .map(function(r) {
          return r.Title;
      })
      .join("; ")
:
   "N/A")

就个人而言,我会将其括在括号中以更清楚地说明发生了什么(如上)。

或者,使用较新的 javascript 功能,您可以使用为解决这个问题而创建的可选链接:

   item[i].Franchises_x0020_with_x0020_Shar?.results
          .map(({ Title }) => Title))
          .join("; ") 
   || "N/A"

推荐阅读