javascript - 在 PHP 中重写 JSON 数组以便 jQuery 可以读取它?

标签 javascript php jquery json ajax

我正在尝试在 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/

相关文章:

php - 如何在codeigniter框架中上传文件

php - 从多维数组中删除未设置的数组

javascript - 用户可以选择两个输入,但只需要一个。

php - 有没有办法在 wamp server 2.4 中为 phpmyadmin 添加自定义虚拟主机名?

javascript - 如何通过鼠标滚动控制html视频?

javascript - NVD3 加载时重绘图表 'show'

jquery - 试图改变 UL LI 背景颜色 jquery

php - 如何检查页面变慢的原因?

javascript - 调整窗口大小时更改元素的高度

javascript - 任何 Javascript 库都可以与phonegap 一起使用吗?