PHP & JSON - проблема печати значения на стороне клиента - PullRequest
0 голосов
/ 03 марта 2011

У меня есть эта функция 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"] .Итак, если я попытаюсь сделать alert (data [0]) , я увижу только [.

Как я могу получить доступ к этому массиву, печатая правильный результат?Я имею в виду:

данные [0] должны печатать 2 , а данные [1] должны печатать сообщение ...

Ответы [ 3 ]

3 голосов
/ 03 марта 2011

Никогда не вставляйте нефильтрованный $ _POST суперглобальный в mysql_queries. Это недостаток безопасности.

Очевидно, что данные возвращаются в виде строки, поэтому data [0] является первым символом. Вместо этого вы хотите JSON. Поэтому убедитесь, что вы используете header () в PHP, чтобы установить тип контента: application / json

Так что попробуйте, прежде чем повторить вывод:

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

Также убедитесь, что ваш запрос jquery имеет

dataType: 'json',
3 голосов
/ 03 марта 2011

попробуйте добавить

dataType:'json'

к вашим опциям в вызове ajax.

0 голосов
/ 03 марта 2011

Как насчет этого:

var obj = jQuery.parseJSON(data);
alert(obj[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...