【发布时间】:2020-10-19 02:49:21
【问题描述】:
我将数据作为 JSON 对象,如果数据 JSON 对象中的 id 与 buttonId 的 id 匹配,我想将数据元素推送到 jsonArray 中。然后我想发送到模态框的 innerHTML 进行显示。
数据得到响应:
[{"id":"4","task_detail":"Use online reports to gather data, confirm with manager and push client data back to Github."},{"id":"6","task_detail":"Pull client data, analyse and push back"},{"id":"9","task_detail":"Perms and user roles in db need creating"},{"id":"10","task_detail":"Pull expense data into API JSON the graph with AJAX and Chart JS"},{"id":"11","task_detail":"Left Side Navigation, requires BS and CSS Style"},{"id":"12","task_detail":"CSS Pipeline color scheme"},{"id":"13","task_detail":"Pull from db and display"},{"id":"14","task_detail":"Export to Excel for tables in reports"},{"id":"15","task_detail":"Test and come up with report data\/ideas to complete"},{"id":"16","task_detail":"Sort by status and date created"},{"id":"17","task_detail":"Add date created to the pipeline table"},{"id":"18","task_detail":"Display info"},{"id":"19","task_detail":"Add option for user to change details - password"},{"id":"20","task_detail":"Collapse from Bootstrap"},{"id":"21","task_detail":"After complete with 1, mimic to 2-5, update project.php buttons"},{"id":"22","task_detail":"Use alert or modal viewer to check if user if sure to delete, once btn pressed"}]
ERROR: 409 Uncaught (in promise) TypeError: Cannot read property 'id' of undefined 在handleJsonData
对于线 if (arrData[i].id == buttonId) {
const pipe_api_url = 'http://localhost/site/handler.php';
var buttonId;
var taskDetail;
var jsonArray = [];
const data = [];
var stringData = [];
async function handleJsonData() {
const response = await fetch(pipe_api_url);
const data = await response.json();
var stringData = JSON.stringify(data);
console.log("Data: "+data);
console.log("stringData: "+stringData);
var hrefurl = window.location.href;
console.log("handleJsonData hrefurl: "+hrefurl);
var btnIndex = hrefurl.indexOf("btnId=");
console.log("handleJsonData btnIndex: "+btnIndex); //index 49 at currently
var startOfurlSlice = btnIndex + 6;
var endOfUrlSlice = btnIndex.length;
var slicedHrefUrl = hrefurl.slice(startOfurlSlice, endOfUrlSlice);
console.log("handleJsonData slicedHrefUrl: "+slicedHrefUrl);
var buttonId = slicedHrefUrl;
for(i = 0; i <= buttonId; i++) {
if (data[i].id == buttonId) {
jsonArray = [];
//jsonArray.push(data[i].id);
jsonArray.push(data[i].task_detail);
console.log("handleJsonData jsonArray "+jsonArray);
}
}
document.getElementById("show-task-details").innerHTML = jsonArray;
}
$("button").click(async function() {
buttonId = this.id; // or alert($(this).attr('id'));
console.log("getBtnId: "+buttonId);
window.location.href = "http://localhost/site/handler.php?btnId=" + buttonId;
document.getElementById("modalLabelPipeDetail").innerHTML = "Details #" + buttonId;
handleJsonData();
});
【问题讨论】:
-
slicedHrefUrl长什么样子? -
data[i]来自哪里?您没有在代码中的任何地方循环遍历data吗?如果您检查data中的所有id,然后循环遍历它,== 则等于 buttonId 就可以了。
标签: javascript jquery json api asynchronous