客户端的PHP到JSON

时间:2010-10-07 18:22:24

标签: php javascript json variables

我正在使用Rob Monies的“Jquery Week Calendar”来构建日历应用程序。

我有一个名为'dates'的表的MSSQL DB和以下字段:

ID 开始 结束 标题

我想在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"}

到目前为止,为了简单起见,我一次只从DB返回一行,但是 - 我需要应用程序能够呈现多个事件,如存储在数据库中。

我尝试使用json_encode()将值放入var并将它们传递给名为DB_events的Javascript var - 如果我在客户端的警告框中返回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变量中,如下所示:

$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 个答案:

答案 0 :(得分:2)

  1. 当您获得对象的字符串表示时,这意味着您已将其导出为字符串而不是对象。

  2. 当你得到[object] [Object]时,意味着它现在是一个对象,这是对的!

  3. 如果您从网址获取JSON,则可以使用 JSONP 执行此操作:

    // 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>";
    

答案 1 :(得分:0)

您使用过jsocn decode

吗?

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

您可以拆分结果并使其成为不同的变量,如开始,结束,事件等

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