PHP в JSON на стороне клиента - PullRequest
0 голосов
/ 07 октября 2010

Я использую Rob Monies 'Jquery Week Calendar' для создания приложения календаря.

У меня есть MSSQL DB с таблицей с именем 'дат' и следующими полями:

идентификатор Начните конец Название

Я хотел бы запросить эту БД в PHP и затем передать результаты в Javascript, затем Javascript отобразит события в браузере.

Javascript должен получить подробную информацию о событии в формате JSON, как показано в следующем примере:

{"id":1,"start": 2010-10-09T13:00:00,"end":2010-10-09T14:00:00,"title":"Lunch with Mike"},
{"id":2,"start": 2010-10-10T13:00:00,"end": 2010-10-10T14:00:00, "title":"Dev Meeting"}

Пока для простоты я только что возвращал одну строку из БД за раз - мне понадобится приложение, чтобы иметь возможность отображать несколько событий, хранящихся в базе данных.

Я пытался использовать json_encode(), чтобы поместить значения в переменную и передать их в переменную Javascript с именем DB_events - если я возвращаю DB_events в окне предупреждения на стороне клиента, я вижу следующее:

{"id":1, "start":2010-10-09T13:00:00, "end":2010-10-09T14:00:00,"title":"Lunch with Mike"}

выглядит нормально, но когда я делаю это в моем коде:

events : [DB_events]

Не работает: (

Если я возьму PHP из уравнения и просто сделаю следующее на стороне клиента:

var DB_events = {"id":1, "start":2010-10-09T13:00:00, "end":2010-10-09T14:00:00,"title":"Lunch with Mike"};

и вернуть DB_events в окно предупреждения, я получаю:

[object] [Object]

Но когда я сделаю это:

events : [DB_events]

это работает!

Вернуться к PHP…

Если я помещу результат SQL в PHP vars следующим образом:

$id = id;
$start = start;
$end = end;
$title = title;

и передать эти переменные следующим переменным JS:

JS_id
JS_start
JS_end
JS_title

и сделайте это на стороне клиента:

var DB_events = {"id":JS_id, "start":JS_start, "end":JS_end,"title":JS_title};

events : [DB_events]

это тоже работает.

Как вы, вероятно, можете сказать - я новичок в этом, и, возможно, мне не хватает чего-то очень простого.

Буду очень признателен за любую помощь, совет или информацию:)

Большое спасибо

Тим

Ответы [ 2 ]

2 голосов
/ 07 октября 2010
  1. когда вы получаете строковое представление вашего объекта, это означает, что вы экспортировали его как строку, а не как объект.

  2. когда вы получаете [object] [Object] это означает, что теперь это объект, который является правильным!

Вы можете сделать это с помощью JSONP , если вы получаете JSON из URL :

// send the request via <script> tag
var src    = "..."; // url of the JSON output
var head   = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", src); 
head.appendChild(script);

Или проанализировать ее как строку с JSON-анализатором : https://github.com/douglascrockford/JSON-js/blob/master/json2.js

var DB_events = JSON.parse( ...JSON output as a string... );

Или путем прямой передачиэто из PHP с встроенным <script> блоком на вашей странице:

echo "<script>";
echo "var DB_events = " . json_encode( ... ) . ";";
echo "</script>";

0 голосов
/ 07 октября 2010

Вы использовали jsocn decode

http://php.net/manual/en/function.json-decode.php

Вы можете разделить результат и сделать его различными переменными, такими как начало, конец, события и т. Д.

http://php.net/manual/en/function.explode.php

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