在Javascript/jQuery中解析PHP序列化数组
我通过在Javascript/jQuery中解析PHP序列化数组,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我通过PHP将数据写入html文件,如下所示: $data = json_decode(stripslashes($_POST['data'])); if($data[0]!=''){ $_SESSION['chatCode'] = $data[2]; $fp = fopen('../sessions/chats/log_'.$data[2].'.html', 'a'); $content = array( 'author' => $data[
PHP
将数据写入html
文件,如下所示:
$data = json_decode(stripslashes($_POST['data']));
if($data[0]!=''){
$_SESSION['chatCode'] = $data[2];
$fp = fopen('../sessions/chats/log_'.$data[2].'.html', 'a');
$content = array(
'author' => $data[1],
'message' => $data[0],
'time' => date('H:i:s'));
fwrite($fp,serialize($content));
fclose($fp);
}
然而,我正在努力解析jQuery中的序列化数据客户端。我目前的代码是:
$.get('sessions/chats/log_'+chatCode+'.html', function(data){
$('#chatContent').html(makePretty(data));
}
function makePretty(html){
var data = JSON.stringify(html);
console.log(data);
var content = '';
for(i=0; i < data.length; i++){
content += '<div class="msgln">'+
'<div class="meta">'+
'<span class="name">'+data[i]['author']+'</span>'+
'<span class="time">'+data[i]['time']+'</span>'+
'</div>'+
'<div class="msg">'+data[i]['message']+'</div>'+
'</div>';
}
return content;
}
$.get('sessions/chats/log\'+chatCode+'.html',函数(数据){
$('#chatContent').html(makePretty(data));
}
函数makePretty(html){
var data=JSON.stringify(html);
控制台日志(数据);
var内容=“”;
对于(i=0;i
日志文件log\u test.html
包含:
a:3:{s:6:“作者”s:5:“e297f”s:7:“消息”s:4:“测试”s:4:“时间”s:8:“09:23:23”}a:3:{s:6:“作者”s:5:“e297f”s:7:“消息”s:4:“测试”s:4:“测试”s:4:“时间”s:4:“时间”s:4:“时间”s:8:“09:26:39”}
控制台记录:
“a:3:{s:6:\'author\'s:5:\'e297f\'s:7:\'message\'s:4:\'test\'s:4:'time\'s:8:\'09:23:23\';}”
这是因为您正在序列化($content)
数据并编写它。相反,请尝试json\u encode($content)
并编写它。这应该适用于您当前的jQuery代码
改变
fwrite($fp,serialize($content));
到
编写序列化数组是一种糟糕的做法,您必须使用
json\u encode
将数据保存到文件中:
fwrite($fp,json_encode($content));
在ajax中获取数据时,不要使用JSON.stringify
使用:
JSON.parse(dataString);
将数组保存在html文档中是很奇怪的。客户希望将日志保存在本地文件中-要么是
html
要么是txt
,而我过去曾将日志保存到html
,所以这似乎是一个明显的选择。现在要重新考虑了!
JSON.parse(dataString);