为了账号安全,请及时绑定邮箱和手机立即绑定

创建和修改 json 字符串

创建和修改 json 字符串

PHP
蓝山帝景 2023-04-15 17:27:40
这是我第一次使用 json。是这样的情况:我通过 php 从我的 mysql 数据库获取数据并将其存储到 php 数组中:$statement = $mysqli->prepare("SELECT chatToken, lastMessageID FROM chat")$statement->execute();$result = $statement->get_result();while($row = $result->fetch_object()) {   $chatData[$row->chatToken] = $row->lastMessageID;}现在我想在 jquery 函数中得到它:我试过这个:var chatData = '<? echo json_encode($chatData); ?>'myFunction(chatData)    function myFunction(chatData) {       console.log(chatData)       // OUTPUT: {"tgv5pxfjsDGXA3JcEYVM":88,"a9gxNZ7HzfcJXQsWCtAp":99}       $.ajax({          type: "POST",          url: "getData.php",          data: 'chatData='+chatData,          dataType: 'json',       }).done(function(result) {          console.log(result);          // Please look the Picture below for output       })    }console.log(result) 的输出获取数据.php<?php$chatData = json_decode($_POST['chatData']);$message = array();foreach($chatData AS $chatToken => $lastMessageID) {   $statement = $mysqli->prepare("SELECT * FROM `messages` WHERE `chatToken` = ? AND `ID` > ?")    $statement->bind_param("ss", $chatToken, $lastMessageID);   $statement->execute();   $result = $statement->get_result();   while($row = $result->fetch_object()) {      $message[] = array(                           "lastMessageID" => $row->ID,                            "chatToken" => $row->chatToken,                        );   }   $statement->close();}echo json_encode($message);?>到目前为止,一切都很好。但现在我想替换/更新我的var chatData:{"tgv5pxfjsDGXA3JcEYVM":88,"a9gxNZ7HzfcJXQsWCtAp":99}的值来自result. 最后它必须是:{"tgv5pxfjsDGXA3JcEYVM":188,"a9gxNZ7HzfcJXQsWCtAp":99}我怎样才能意识到呢?
查看完整描述

1 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

由于 chatData 是 JSON(字符串),您可以:

  • 解析成一个对象JSON.parse

  • 做出改变

  • 将其转换回字符串JSON.stringify

// result from ajax call, jquery converts this from the php json to an object/array

var result = [{chatToken:"tgv5pxfjsDGXA3JcEYVM",lastMessageID:188}];


// string from `var chatData = <?php ...` as JSON

var chatData = '{"tgv5pxfjsDGXA3JcEYVM":88,"a9gxNZ7HzfcJXQsWCtAp":99}'; 


// convert string to object

var data=JSON.parse(chatData); 


// use the first result array ([0]) chatToken to update chatData

data[result[0].chatToken] = result[0].lastMessageID;


// convert back to JSON (string)

chatData = JSON.stringify(data);


// show result

console.log(chatData);

在你的情况下,我建议chatData在开始时转换为一个对象

var chatData = JSON.parse('<? echo json_encode($chatData); ?>');

然后将其用作对象,然后仅在需要时转换为 json(string)(在 ajax 帖子中)

data: 'chatData='+JSON.stringify(chatData),


查看完整回答
反对 回复 2023-04-15
  • 1 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信