PHP& JSON - 无法在客户端打印值

时间:2011-03-03 14:59:11

标签: php jquery json

我有这个PHP函数:

if(($_POST['id']=="pm_read") && (isset($_POST['pm_id'])) && (ctype_digit($_POST['pm_id'])) && (isset($_SESSION['nickname']))) {
    $update=mysql_query("UPDATE pm SET readed='1' WHERE id='".$_POST['pm_id']."' AND receiver='".$_SESSION['nickname']."'",$mydb);
    $query=mysql_query("SELECT COUNT(id) FROM pm WHERE receiver='".$_SESSION['nickname']."' AND readed='0' AND receiver_delete='0' ORDER by date DESC",$mydb);
    $arrayPm[0]=mysql_result($query,0,'COUNT(id)');
    $query=mysql_query("SELECT message FROM pm WHERE id='".$_POST['pm_id']."' AND receiver='".$_SESSION['nickname']."'",$mydb);     
    $arrayPm[1]=mysql_result($query,0,'message');
    echo json_encode($arrayPm);     
}

在客户端,我得到了一个jQuery函数的数组:

$.ajax({
    type: 'POST',
    cache: false,
    url: 'pm/pm_ajax.php',
    data: 'pm_id='+$(this).attr('id')+'&id=pm_read',
    success: function(data) {
       ... here I'll print somethings...
    }
});

不幸的是,如果我打印data我得到(例如)字符串 [“2”,“message”] 。 所以,如果我尝试警告(数据[0]),我只会看到 [

如何访问此阵列打印正确的结果?我的意思是:

数据[0]必须打印 2 ,数据[1]必须打印消息 ...

3 个答案:

答案 0 :(得分:3)

尝试添加

dataType:'json'

在ajax调用中的选项。

答案 1 :(得分:3)

永远不要将未经过滤的$ _POST超全局插入到mysql_queries中。这是一个安全漏洞。

显然,数据作为字符串返回,因此data [0]是第一个字符。相反,你想要JSON。因此,请确保在PHP中使用header()来设置content-type:application / json

所以在回显输出之前先尝试一下:

header('content-type: application/json');

还要确保您的jquery请求

dataType: 'json',

答案 2 :(得分:0)

这个怎么样:

var obj = jQuery.parseJSON(data);
alert(obj[0]);