我正在使用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]
也有效。
你可能会说 - 我是新手,可能会遗漏一些非常基本的东西。
非常感谢任何帮助,建议或信息:)
非常感谢
添
答案 0 :(得分:2)
当您获得对象的字符串表示时,这意味着您已将其导出为字符串而不是对象。
当你得到[object] [Object]
时,意味着它现在是一个对象,这是对的!
如果您从网址获取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)