2011-01-14 11 views
1

JSONデータ、JqueryのgetJSONメソッドを使用してPHPのサーバーサイドスクリプトを使用してデータを取得しました。今私はJSONデータがPHP関数とJavascriptイベントまたはURLによって返されるようにして、そのデータを取得しようとしています。 JavaScriptデータにアクセスするためのJavascript関数では、コールバックが必要です。コールバックを作成する方法を理解できません。PHPからJSONデータを返し、JavaScriptを使用して使用します

私は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ファイルを実行すると、私は

"Error: invalid label Source File: http://myserver/getData.php Line: 1, Column: 1 Source Code: {"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"}]}"

を言ってエラーが出ますエラーコンソールの

私は自分の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---------- 

データを取得するコールバックの仕組みがわかりません。

+0

あなたの質問にコードを書くときは、各行を4つのスペースだけインデントしてください。 – Pointy

+0

@Pointy - それを強調表示して{}ボタンをクリックすることもできます –

答えて

1

そのJSON構造は、JavaScriptのパーサ、単に間違っているので、あなたはそのエラーを取得しています。裸の中括弧({)の後、Javascriptはステートメントを期待しています。あなたのコードが期待するように見える何

はJSON は単にページへ<script>として含まれていないこと、それはのXMLHttpRequestにより積極的にフェッチされる代わりに、ということである(すなわち、「AJAX」)。それは本当に一般的です、そして、それは<script>タグがあなたに与えるものとはかなり異なっています。このような状況では、JSONの構造はクライアント側のコードで明示的に解析され、必要なものは何でも使用されます。

+0

修正します。あなたのHTMLページはJavaScriptとしてJSONをインクルードしようとしていますが、これは失敗します。変数をAJAX呼び出しで割り当てるか、PHPページで変数として出力する必要があります( 'var myData = {...}')。 – MidnightLightning

+0

どのように出力を変数として割り当てることができますか?私はちょうどjson_encode($データ)を返しますか?または私は私のPHPの中にいくつかのJavaScriptを書いて、それを返すだろうか? – macha

+0

PHPコードでJSONを書き出した場合、それがうまくいくと思います。 – Pointy

2

はgetData.phpであなたのヘッダーを忘れないでください:

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

Some useful examples in the php manual

+0

このヘッダーを追加すると、ファイルがダウンロードされます。ページをロードするとすぐに、getData.phpファイルのダウンロードを求めるプロンプトが表示されます。これは凶悪ですか? – macha

+0

ブラウザ経由で出力を表示しようとしていますか?ブラウザにアプリケーション/ jsonを解釈させるためのさまざまな方法があります。 http://adallow.wordpress。com/2008/10/13/viewing-applicationjson-mime-type-doc-in-your-browser/ – Ken

0

あなたはJSONエンコードされた$ data配列には、あなたがこれを行うことができますJavaScriptでavaliableようにしたい場合:HTMLファイル内

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

..このことができます

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

希望。

関連する問題