首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建和修改json字符串

创建和修改json字符串
EN

Stack Overflow用户
提问于 2020-05-23 15:51:53
回答 1查看 40关注 0票数 0

这是我第一次和json一起工作。情况是这样的:

我从mysql数据库中通过php获取数据,并将其存储到php数组中:

代码语言:javascript
复制
$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函数中得到这一点:

我试过这个:

代码语言:javascript
复制
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(结果)

getData.php

代码语言:javascript
复制
<?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

代码语言:javascript
复制
{"tgv5pxfjsDGXA3JcEYVM":88,"a9gxNZ7HzfcJXQsWCtAp":99}

使用来自result的值。最后,必须是:

代码语言:javascript
复制
{"tgv5pxfjsDGXA3JcEYVM":188,"a9gxNZ7HzfcJXQsWCtAp":99}

我怎么能意识到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 16:25:57

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

将其解析为对象JSON.parse

  • make更改

  • 将其转换为字符串

代码语言:javascript
复制
// 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转换为对象

代码语言:javascript
复制
var chatData = JSON.parse('<? echo json_encode($chatData); ?>');

然后使用它作为一个对象,然后只在需要时(在ajax中)转换为json(string)。

代码语言:javascript
复制
data: 'chatData='+JSON.stringify(chatData),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61974677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档