我正在尝试在 PHP 中创建一个 jQuery 可以使用和访问的 JSON 数组,但由于某种原因它不起作用。我在客户端和服务器日志中都没有收到错误消息,如果我直接访问 enc.php,它确实可以工作,但我不确定输出是否正确(数组格式)。
我想要什么:
我想使用 jQuery 访问数据,使用 data[i][0] 作为 ID([i] 因为它在循环中),使用 data[i][1] 作为消息等。
也许我尝试以错误的方式执行此操作,如果是这样,请帮助我指出正确的方向或提供示例。
我的代码:
当前PHP代码:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$fetchedid = $row['id'];
$fetchedkey = $row['chat_key'];
$fetchednonce = $row['chat_nonce'];
$fetcheduser = $row['chat_user'];
$fetchedmsg = $row['chat_msg'];
$plainmsg = \Sodium\crypto_secretbox_open($fetchedmsg, $fetchednonce, $fetchedkey);
$out = array('id' => $fetchedid, 'msg' => $plainmsg, 'user' => $fetcheduser);
header('Content-Type: application/json');
ob_end_clean();
echo json_encode($out);
}
结果:
{"id":297,"msg":"test message","user":"john"}
我的 jQuery (Ajax) 代码:
$.ajax({
type: "GET",
url: "enc.php",
dataType: "json",
success: function(data) {
console.log('Update success called');
if (data == 2) {
// No messages to fetch
} else if (data == 3) {
// Cookie Tampering detected
} else if (data == 5) {
$("#chat").remove();
alert("Den här chatten är stängd (tiden har gått ut).");
window.location.href = "/?logout=safe";
}
else {
for (i = 0; i < data.length; ++i) {
var mid = data[i][0];
$.cookie("cmid", mid);
var from = data[i][1];
var msg = data[i][2];
$("#chat").append('<div class="left spotmsg"><div class="chat-avatar pull-left"><img src="/img/them.png" alt="avatar" width="48" height="48"></div><div class="message"><div class="arrow-left"></div><p><strong>@'+from+'</strong></p><p class="txt">'+msg+'</p></div></div>');
}
$('textarea').focus();
$(".chat_area").animate({ scrollTop: $(".chat_area")[0].scrollHeight}, 1000);
}
}
});
最佳答案
您可以使用 .
表示法访问对象。要访问值
,请使用键
。例如,要访问id
,请使用data.id
。如果您有对象,则无法使用长度循环。
var mid = data.id; //specify key to access id
$.cookie("cmid", mid);
var from = data.user;
var msg = data.msg;
$("#chat").append('<div class="left spotmsg"><div class="chat-avatar pull-left"><img src="/img/them.png" alt="avatar" width="48" height="48"></div><div class="message"><div class="arrow-left"></div><p><strong>@'+from+'</strong></p><p class="txt">'+msg+'</p></div></div>');
关于javascript - 在 PHP 中重写 JSON 数组以便 jQuery 可以读取它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44503088/