在Javascript / jQuery

时间:2015-05-26 08:39:00

标签: javascript php jquery arrays

我通过html将数据写入PHP文件,如下所示:

$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;
}

日志文件log_test.html包含:

a:3:{s:6:"author";s:5:"e297f";s:7:"message";s:4:"test";s:4:"time";s:8:"09:23:23";}a:3:{s:6:"author";s:5:"e297f";s:7:"message";s:4:"test";s:4:"time";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:37:03";}

控制台记录:

"a:3:{s:6:\"author\";s:5:\"e297f\";s:7:\"message\";s:4:\"test\";s:4:\"time\";s:8:\"09:23:23\";}"

2 个答案:

答案 0 :(得分:1)

那是因为您提供了serialize($content)数据并撰写了它。而是尝试json_encode($content)并写下来。这应该适用于您当前的jQuery代码。

更改

fwrite($fp,serialize($content));

fwrite($fp,json_encode($content));

答案 1 :(得分:0)

编写序列化数组是不好的做法,您可以使用json_encode将数据保存到文件中:

fwrite($fp,json_encode($content));

在获取ajax中的数据时,而不是使用JSON.stringify使用:

JSON.parse(dataString);