javascript - 未捕获的类型错误:无法读取 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);
}
解决方案
您可以使用三元运算符并对每个项目重复此操作:
(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"
推荐阅读
- c# - 使用 Redis 实现排序、搜索和分页以获得最佳性能的最佳方式
- javascript - 使用 bind 来利用另一个 Javascript 类的方法
- javascript - Axios vue.js CORS 错误,代理未定义响应
- netty - 未调用 ChannelRead
- c++ - “由于调用...,noexcept-expression 评估为 'false'”是什么意思?
- python - 如何使用烧瓶在多个页面中显示用户名?
- java - 如何使用 Java 客户端在 Elasticsearch 中查询多值数组字段?
- java - 来自其他类的方法和 toString() 的使用
- python - python中的泰勒展开
- javascript - 在客户端模拟 HTTP 请求