Вернуть данные JSON из PHP и использовать их с помощью Javascript - PullRequest
1 голос
/ 14 января 2011

Я работал с данными JSON, методом JJery getJSON, чтобы использовать PHP-скрипты на стороне сервера для получения данных. Теперь я пытаюсь работать с данными JSON, возвращаемыми функцией PHP, и событие Javascript или URL-адрес могут получить эти данные. Чтобы функция Javascript имела доступ к данным PHP, она должна иметь обратный вызов, и я не могу понять, как мне создать обратный вызов.

Существующий код, который у меня есть в файле PHP (getData.php), может выводить / возвращать вывод JSON и выдавать данные, которые будут выглядеть следующим образом

{"count":3,"items":[{"myTab_ID":"1","myTab_xam":"test1","myTab_rank":"21"},
{"myTab_ID":"2","myTab_xam":"test2","myTab_rank":"22"},
{"myTab_ID":"3","myTab_xam":"test3","myTab_rank":"22"}]}

Теперь у меня есть файл javascript, который будет выполнять вызов, который будет немного похож на твиттер,

 <html>
    <head>
      <script type="text/javascript" src="http://myserver/getdata.php">
      </script>
   </head>
 </html>

Теперь, когда я запускаю этот HTML-файл, я получаю сообщение об ошибке

"Ошибка: неверная метка Исходный файл: http://myserver/getData.php Строка: 1, Колонка: 1 Исходный код: { "Счетчик": 3, "элементы": [{ "myTab_ID": "1", "myTab_xam": "test1", "myTab_rank": "21"}, { "myTab_ID": "2", "myTab_xam" : "test2", "myTab_rank": "22"}, { "myTab_ID": "3", "myTab_xam": "test3", "myTab_rank": "22"}]} "* +1014 *

в консоли ошибок.

Я немного рад, что хотя бы смог получить данные со своей стороны php в html-файл, но теперь мне интересно, как бы я использовал эти возвращенные данные JSON. Как бы я разработал функцию обратного вызова, которая возвращает данные JSON обратно ??

> ------code in getData.php---------------
> 
> $con =
> mysql_connect("localhost","peter","abc123");
> if (!$con)   {   die('Could not
> connect: ' . mysql_error());   }
> 
> mysql_select_db("my_db", $con);
> 
> $result = mysql_query("SELECT * FROM
> Persons");
> 
> while($row =
> mysql_fetch_array($result))   {  
> $data[] = $row;   }
> 
> echo json_encode($data);
> 
> --------------end - getdata.php--------------
> 
> ---------code in getJson.html------------- html> <head>
> <script type="text/javascript"
> src="http://myserver/getdata.php">
> </script> </head>
> 
> </html>
> -----------------------end- getJson.html----------

Я не уверен, как будет работать обратный вызов для получения данных?

Ответы [ 3 ]

2 голосов
/ 14 января 2011

Не забудьте свой заголовок в getData.php:

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

Несколько полезных примеров в руководстве по php

1 голос
/ 14 января 2011

Вы получаете эту ошибку, потому что эта конструкция JSON просто ошибочна для синтаксического анализатора JavaScript. После открытой фигурной скобки ({) Javascript ожидает утверждения.

Ваш код, похоже, ожидает, что JSON не будет включен просто как <script> в страницу, а вместо этого будет активно извлекаться XMLHttpRequest (то есть "ajax"). Это действительно часто встречается и сильно отличается от того, что дает тег <script>. В таких ситуациях конструкция JSON явно анализируется клиентским кодом и используется для чего угодно.

0 голосов
/ 14 января 2011

если вы хотите, чтобы в $ javascript был доступен массив $ data в кодировке json, вы можете сделать это:

<?php $jencodeddata = json_encode($data); ?>

в вашем HTML-файле ..

<script type="text/javascript">
function doSOmething()
{    
var jsencodedata = '<?php print $jencodeddata ?>';
you can loop through jsencodedata here....
}
</script>

надеюсь, это поможет.

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