【发布时间】:2020-06-17 01:02:02
【问题描述】:
我正在将此产品保修数据库系统作为一个小型学习项目作为新的 Web 开发。我对我最想拥有的最后一个更大的工具之一有很多问题。这是每一行中的一个按钮,当单击该按钮时,将弹出一个模式弹出窗口,并有一个将原始评论设置为值的文本框。当用户完成添加或更改评论后,单击另一个按钮,它将更新(我对此部分有信心)。
这个问题在于检索实际评论。我正在使用在网上找到的类似项目作为指导工具。他们使用 JSON 调用 php 函数来检索数据并将文本框的值设置为数据。我尝试了这种方法,但似乎没有任何效果。我尝试更改代码,阅读更多关于 JSON 的内容,尝试过其他项目,但没有成功。我还尝试使用 onclick 方法并在实际按钮侧传递参数,但这也不起作用。当我的意思是它不起作用时,我的意思是控制台日志中有 0 个错误,所以我不确定在哪里寻找更正。
在删除数据类型:'JSON' 时,我确实让该函数正常工作,但该框从未设置为该值。
这里有几个代码块供参考。是的,它很混乱,是的,我知道它容易受到连接攻击。
在表格 php 文件中,用于为每个产品创建按钮。
if ($row['WarrStatus'] == 'ACTIVE') {
echo '<td><button type="button" class="deleteRow" id="'.$id.'" >Delete</button></td>
<td><button type="button" class="updateRow" id="'.$id.'" >Update</button></td>
<td><button type="button" class="resolveRow" id="'.$id.'" >Resolve</button></td>';
}
这是点击updateRow按钮时的js函数,这个会执行
$(".updateRow").click(function() {
var item_id = $(this).attr("id");
$.ajax({
url:"Actions/fetch.php",
method:"POST",
data:{item_id:item_id},
dataType:"json",
success: function(data) {
document.getElementById("CommentBox") = data.comments //Comments = the data retrieved
modal.style.display = "block"; //Display the modal
}
});
});
这是获取json数据的fetch.php。
if(isset($_POST["item_id"])) {
$query = "SELECT comment FROM inspection.product WHERE TransactionID = '".$_POST["item_id"]."'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);
echo json_encode($row);
}
?>
最后,这是模态的。
<div id="myModal" class="modal"
<div class="modal-content"
<span class="close">×</span>
<h2>Update a Comment</h2>
<p id="CustDetails">You are now editing ...</p>
<form method="POST">
<input type ="text" class="CommentBox" id="CommentBox" value=""></input>
<button class="updateCommentbtn" id="updateCommentbtn" value="">Update</button>
</form>
</div>
</div>
这是显示的内容
总而言之,我的问题似乎是当单击更新按钮时,没有通过 JSON 或任何其他方法检索到数据,我不确定这是为什么。任何帮助将不胜感激!
【问题讨论】:
-
你
echo json_encode($results);,但你从来没有给$results分配任何东西。也许你的意思是echo json_encode($row);? -
啊!我的错。这并不能解决它只是尝试一些东西,要更改和编辑它。谢谢!
-
您应该在 AJAX 调用中添加错误回调。如果请求返回 200 以外的响应,您将不会看到任何错误,并且不会执行您的成功回调。
-
@akenion 谢谢,我添加了一个带有警报的失败。但有趣的是,当我单击更新按钮时,没有失败警报...
-
查看浏览器开发者工具中的网络标签。您应该会看到对您的 AJAX 请求的响应。如果您的错误回调没有触发,它可能是 200。由于不会使用 JSON 请求设置 POST 参数,我希望响应正文为空。
标签: javascript php html jquery json