gpt4 book ai didi

jquery - 如何在 jQuery 中解析 JSON 数组?

转载 作者:行者123 更新时间:2023-12-03 22:53:52 24 4
gpt4 key购买 nike

编辑 我检查了 jQuery 文档,并使用 $.ajax 和指定的 json 数据类型返回一个评估的 javascript 对象,因此 eval() 不是这里的答案。无论如何,我知道这一点,因为我能够解析单个 JSON 对象,但不能解析数组。问题是 $.each-ing 我通过它们:)

我已经遵循了在 jQuery 中解析 JSON 数组的语法,但由于某种原因它不起作用。我使用 $.ajax 获取数组,指定了正确的数据类型,并且在 Firebug 中可以看到我的 PHP 脚本的响应是 []。然而,当我尝试使用 $.each 迭代数组时,当我尝试 console.log 数组的各个部分时,我得到的只是未定义的值。这是我的 php 脚本创建和编码数组的地方:

if(mysqli_num_rows($new_res) > 0) {
$messages = array();

while($message_data = mysqli_fetch_assoc($query_res)) {
$message = array(
'poster' => $message_data['poster'],
'message' => $message_data['message'],
'time' => $message_data['time']
);

$messages[] = $message;
}

echo json_encode($messages);
} else if(mysqli_num_rows($new_res) == 0) {
$message = array(
'poster' => '',
'message' => 'No messages!',
'time' => 1
);

echo json_encode($message);
}

这是我尝试解析它的方法:

   var logged_in = '<?php echo $logged_in; ?>';
var poster = '<?php echo $_SESSION["poster"];?>';
$.ajax({
url: 'do_chat.php5',
type: 'post',
data: ({'poster':poster,'logged_in':logged_in}),
dataType: 'json',
success: function(data) {
$.each(data, function(messageIndex, message) {
console.log(parseInt($('#chatWindow :last-child > span').html())+' '+message['time']);
if((parseInt(message['time']) > parseInt($('#chatWindow :last-child > span').html()))) {
$('#chatWindow').append('<div class="poster">'+message['poster']+'</div><div class="message"><span>'+message['time']+'</span>'+message['message']+'</div>');
}
});
}
});

如果没有 $.each 函数,我可以成功解析单个 JSON 对象,但不能解析数组。这是我第一次使用 JSON 和 $.each,而且我对 jQuery 还很陌生,所以如果我的代码有难看的地方,请放轻松!

最佳答案

不,使用 eval 并不安全,您可以使用更安全的 JSON 解析器: var myObject = JSON.parse(data);为此,请使用 lib https://github.com/douglascrockford/JSON-js

关于jquery - 如何在 jQuery 中解析 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1607937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com