Массивы PHP - проблема со ссылками на jQuery - PullRequest
0 голосов
/ 16 августа 2011

У меня есть следующий php:

1) echo json_encode(array('message' => 'Invalid Login Details: '.$user));

У меня также есть следующее:

2) $row = mysql_fetch_assoc($result);
   echo(json_encode($row));

Теперь рассмотрим следующий jQuery:

 $.ajax({
           type: "POST",
           url: "get_login.php",
           data: {username: getusername, password:getpassword, usertype:getusertype},
           dataType: "json",
           success: function(data) {
              $("#message_ajax").html("<div class='successMessage'>" + data.message +"</div>");
           }
        })

Это успешно для (1), но не для (2). Это очевидно, потому что jQuery ожидает ответ php, содержащий переменную сообщения. (2) не соответствует этому ... Я не знаю, как заставить это работать, поскольку я использую различные методы для создания массивов ...

Как сделать $ row в php совместимым с data.message в jQuery?

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

попробовать:

$data = array();
$data["message"] = "Valid request";
$data["row"] = mysql_fetch_assoc($result);
   echo(json_encode($data));

сообщение = строка:

$data = array();
$data["message"] = mysql_fetch_assoc($result);
   echo(json_encode($data));

или решение с двумя строками (вдохновлено val):

$row = mysql_fetch_assoc($result);
   echo(json_encode(array("message" => $row)));
1 голос
/ 16 августа 2011

Попробуйте

$row = mysql_fetch_assoc($result);
   echo(json_encode(array('message'=>'I am the message','result'=>$row));

Затем, чтобы ответить на ваш второй вопрос в комментариях, что-то похожее на это может показать информацию ....

 $.ajax({
           type: "POST",
           url: "get_login.php",
           data: {username: getusername, password:getpassword, usertype:getusertype},
           dataType: "json",
           success: function(data) {
              $("#message_ajax").html("<div class='successMessage'>" + data.message +"</div>");
              var html = '';
              for(var i = 0; i<data.result.length;i++){
                 html +='<div>'+data.result[i].fname+'</div>';
               }
              $('#result').html(html);
           }
        })

Конечно, вам нужно отредактировать ее abitгде применимо.

0 голосов
/ 16 августа 2011

Я думаю, у вас нет $row['message'] от mysql_fetch_assoc. Вы должны явно определить ключ message в массиве до json_encode.


    $row = mysql_fetch_assoc($result);
    $row['message'] = 'Hello '.$row['username'];
    echo(json_encode($row));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...