我有这个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]必须打印消息 ...
答案 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]);