我目前正在使用Javascript和JSON对象的项目中,尝试以弹出模式填充数据。该过程的工作方式是,用户单击反馈问题的标题,然后使用反馈问题的ID从数据库中提取数据并将其插入JSON对象。唯一的问题是模式返回“ Undefined”。第一个脚本是我的showTicket函数,该函数使用onclick调用。
function showTicket(id) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
document.getElementById("issueHeader").innerHTML = myObj.title;
}
};
xmlhttp.open("GET", "./applet/ajax.fetchIssue.php?issueID="+id, true);
xmlhttp.send();
jQuery('#issueModal').modal('show');
}
下一个脚本是我如何使用ajax.fetchIssue.php
if (isset($_GET['issueID'])) {
$modalQuery = dbQuery("SELECT * FROM `feedback` WHERE `id` = '" . $_GET['issueID'] . "'");
while ($data = mysqli_fetch_assoc($modalQuery)) {
echo '[{';
echo '"title":"' . $data['subject'] . '", ';
echo '"body":"' . $data['body'] . '", ';
echo '"date":"' . $data['submission_date'] . '", ';
echo '"category":"' . $data['feedback_category'] . '"';
echo '}]';
}
}
现在我的JSON对象
[{"title":"Testing", "body":"Testing Feedback System...", "date":"2020-04-20", "category":"other"}]
我查看了其他线程,但它们似乎并不能帮助我缩小问题所在。任何和所有反馈表示赞赏。谢谢!
答案 0 :(得分:2)
答案 1 :(得分:1)
通过echo
组成json不太方便)通过json_encode
使用array
可能会更容易。
也许这可以解决您的问题。
<?php
header('Content-Type: application/json');
if (isset($_GET['issueID'])) {
$array = array();
$modalQuery = dbQuery("SELECT * FROM `feedback` WHERE `id` = '" . $_GET['issueID'] . "'");
while ($data = mysqli_fetch_assoc($modalQuery)) {
$array[] = array('title' => $data['subject'], 'body' => $data['body'], 'date' => $data['submission_date'], 'category' => $data['feedback_category']);
}
echo json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
}
?>
JS:
function showTicket(id) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "./applet/ajax.fetchIssue.php?issueID="+id, true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
document.getElementById("issueHeader").innerHTML = myObj[0].title;
}
};
jQuery('#issueModal').modal('show');
}