2011-01-02 12 views
0

javascriptを使用して動的コンテンツをWebページに取得しようとしています。何かが間違っていて、私はそれが何であるかを考え出すのに問題があります。 Firebugでは、JSONデータが必要に応じて取得されていることがわかります。 「DOM」の下でFirebugを見ると、ページ(JSONデータのURLではなく実際に作成したページ)にアクセスしているURLは赤色になります(下記のスクリーンショットを参照)。ここに私のjavascriptは次のとおりです。JQuery.getJsonが正しく起動されていません

$(document).ready(function() { 

     $('#target').click(function() {     

      alert("At least I',m reached "); 

      $.getJSON('http://localhost/timereporting/phpscriptlibrary/get_remaining_hours.php', function(data) { 

        document.getElementById('errorDiv').innerHTML = "Divtext"; 
        alert("Inside getJason"); 
      }); 
      alert("At least I',m done "); 

     }); 

これは私のPHPファイルの重要な部分である:

$json_string = "{\"activities\": "; 

$json_string = $json_string."["; 

for ($counter = 0; $counter < $num; $counter += 1) { 

      $json_string = $json_string."[".mysql_result($rows,$counter,'date').", \"".mysql_result($rows,$counter,'activity_id')."\", ".mysql_result($rows,$counter,'hours')."]"; 

      if($counter != ($num-1)){ 
      $json_string = $json_string.", "; 
      } 

} 

$json_string = $json_string."]}"; 

echo $json_string; 

私は「エコー」はJavaScriptにJSONデータを「送信」するための方法であると仮定しますか?

ファンクバグのJSONデータは、2つの異なる方法で表示されます。以下のスクリーンショットを見ると、2番目のスクリーンショットは「1988」などのようなものですが、最初のスクリーンショットでは「2010-12-10」のように完了しています。最初のスクリーンショットは、どのようにしてそれを送信しようとしているのかを示しています。明らかに、ある時点でこれが受信されています。

私のdivタグが日付で更新されない、または$ .getJSON内の警告がトリガされないのはどういう意味ですか、前後の警告のみですか?

alt text

alt text

alt text

答えて

6

あなたのJSON文字列を正しく作成しないでください。すべての文字列を二重引用符で囲む必要があります。しかし、2010-12-10はそうではなく、jQueryはこれを2010 - 12 - 10 = 1988と評価します。それはそれではないだろう右のヘッダーを設定するために役立つだろうallso

$data = array(); 

while(($row = mysql_fetch_array($result))) { 
    $data[] = array($row['date'], intval($row['activity_id']), intval($row['hours'])); 
} 

echo json_encode(array('activities' => $data)); 
+1

json_encode、のようなものを使用し、手動で文字列を作成しないでください?ヘッダー( 'Content-type:application/json'); ヘッダー( 'Cache-Control:no-cache、must-revalidate'); –

+0

このようなことは長期間に渡る時間を節約し、バグを減らすのに役立ちます。間違いなく、このツールまたはそれに類似したものを使用してください。 – jmort253

+0

@poelinca:私はそれが必須ではないと思いますが、それは間違いなく働くでしょうが、間違いなく助けになります。 –