views:

54

answers:

2

Hi,

I'm using Rob Monies 'Jquery Week Calendar' to build a calendar application.

I have a MSSQL DB a with table named 'dates' and the following fields:

id start end title

I would like to query this DB in PHP and then pass the results to Javascript, Javascript will then render the events in the browser.

The Javascript needs to receive the event details in JSON format as per the following example:

{"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"}

So far, to keep things simple I've just returned one row from the DB at a time, however - I will need the application to be able to render multiple events, as stored in the database.

I've tried using json_encode() to put the values into a var and pass them to a Javascript var called DB_events - if I return the DB_events in an alert box on the client side I see the following;

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

which looks ok, but when I do this in my code:

events : [DB_events]

It doesn't work :(

If I take PHP out of the equation, and just do the following on the client side:

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

and return DB_events in an alert box, I get:

[object] [Object]

But when I do this:

events : [DB_events]

it works!

Back to PHP …

If I put the SQL result into PHP vars as follows:

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

and pass those vars to the following JS vars:

JS_id
JS_start
JS_end
JS_title

and do this on the client side:

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

events : [DB_events]

that also works.

As you can probably tell - I'm new to this and probably missing something very basic.

Any help, advice or information would be very much appreciated :)

Many Thanks

Tim

A: 

Did you use jsocn decode

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

You can split the result and make it differenct variables like start ,end , events etc

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

zod
+1  A: 
  1. when you get a string representation of your object it means that you've exported it as a string not as an object.

  2. when you get [object] [Object] it means that it is now an object, which is right!

You can do this with JSONP if you get JSON from an 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);

Or parse it as a string with JSON parser: http://www.json.org/json2.js

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

Or by directly passing it from PHP with an inline <script> block in your page:

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

galambalazs
great, how would you pass this from php to JS on the client side?
or would this line set the JS variable from PHP?
see my updated answer.
galambalazs
That looks great, I'm on UK time so will give it a try first thing in the morning - thanks :-)
That worked an absolute treat - thank you very much! :o)