这是我第一次和json一起工作。情况是这样的:
我从mysql数据库中通过php获取数据,并将其存储到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(结果)

getData.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}我怎么能意识到这一点?
发布于 2020-05-23 16:25:57
由于chatData是JSON (一个字符串),您可以:
将其解析为对象JSON.parse
// 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); ?>');然后使用它作为一个对象,然后只在需要时(在ajax中)转换为json(string)。
data: 'chatData='+JSON.stringify(chatData),https://stackoverflow.com/questions/61974677
复制相似问题