2011-08-24 7 views
0

EDIT 解決済みです。これは、Ajax呼び出しの前であったため、このコードです。答えをありがとうございました。Jquery json echo


この問題のあるユーザーは見つかりませんでした。 JSONレスポンスを返すPHPスクリプトをAJAX呼び出しがあります。

私は配列にデータベースから値をフェッチ:

while($row = mysql_fetch_array($ret)){ 
    $temp = array(
    'id' => $row['id_reserva'], 
    'start' => $row['data_inicio'], 
    'end' => $row['data_fim'], 
    'title' => $row['descricao'] 
    ); 

    $js[] = $temp; 
} 

ヘッダ:

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

エコー:

echo json_encode($js); 

一切ノーリターン、ちょうどヌルはありません文字列。

$temp = '[{"id":"3914", "start": "2011-08-25 09:00:00", 
"end":"2011-08-25 18:00:00", "title":"asdasdasd"}, 
{"id":"3915", "start": "2011-08-25 09:00:00", 
"end":"2011-08-25 18:00:00", "title":"asdasdasd"}]'; 

echo $temp; 

それは動作します本当に私を悩ませている何 があればこの代わりに、私はコードに直接前の結果をJSON文字列を作成することです。 ファイルのコード化を変更し、文字列を比較し、文字に問題がないかどうかを確認しました。

誰か?

乾杯

+0

DBクエリは実際に動作していますか?エラーがある場合、または空の結果セットを返す場合は、空のjson出力が得られます。 –

+0

@Marc B - はい、うまくいきます。私はjson_encodeの生成結果を使用して、直接($ temp)エコーした文字列を作成しました。 –

+0

クロム開発ツールでHTTPrequestをログに記録し(コンソールで右クリック)、実際にajax呼び出しが行われたときにconosoleログのリンクをクリックします。それは新しいタブで要求を開き、結果があるかどうかを確認します(jsonは "テキスト"として表示されます) – roselan

答えて

2

あなたはそれをエンコードする必要があります。

echo json_encode($js); 
+0

申し訳ありません、表示コードでそのことを忘れました。そこにはありますが、それでは動作しません。 –

+0

json_encodeは確かにそこにあります..著者は質問を改訂しましたか? – Evert

+0

はい、はい私はしました。コメントに返信。私は上記のコードに入れて忘れてしまった。 –

1

を試してみてください?

echo json_encode($js); 

jQueryがレスポンスを取得し、JSONを解析できない場合は、経験したとおりに空の文字列を返します。排除の

+0

申し訳ありませんが、表示コードでそのことを忘れてしまいました。そこにはありますが、それでは動作しません。 –

1

あなたはJSONとして出力していない:あなたはエンコードの配列をJSONに必要

echo json_encode($js); 
+0

申し訳ありませんが、表示コードでそのことを忘れました。そこにはありますが、それでは動作しません。 –

0

プロセス..

  • あなたがしますprint_r($ JS)と出力を得ることができますか?
  • ヘッダー()を取り出します。声明、何が現れますか?
  • error_reportingとdisplay_errorsが有効になっていますか?
  • 'js'($ js = array())を初期化していないようです。リテラル文字列 'null'が戻された場合、これは単にクエリが結果を返さないことを意味します。

私は、スタックオーバーフロー上のほぼすべての長ったらしいPHPのrequestionにこのステートメントを追加することができます:ステップにより、コードのステップを通じて

移動し、変数の内容は、その時点であることを期待するものエコー。その後、あなたの問題がどこにあるかをゆっくりと分離します。そのままの状態でコードに問題はありません。

+0

すべて完了しました。これをテストするには、最後に2つのエコーを使ってファイルを直接呼び出し、それらはまったく同じです。ヘッダーなし、同じ結果、エラーは「はい」です。また、配列を作成してencondingする代わりに、whileブロックにJSON文字列を生成しようとしました。サイコロはありません。私はこれ以上欲求不満です。 –

+0

その場合、ここで実行してテストできるものが得られるまでコードを減らしてみてください。最初に、mysqlクエリを取り出します。私はそれをローカルで実行することができれば、どこに問題があるのか​​を教えてくれるでしょう。 – Evert

0

$js[] = $temp;で多次元配列を作成してエンコードしていませんか?ただ実行してみてくださいjson_encode($temp);

+0

ええ、各行に対して、配列($ js [])にマージする行を作成します。 $ tempだけを使うと、私は最後の結果しか得られません。とにかく、それは同じように動作しません。非常に奇妙です。 –

+0

json_last_error関数を使って何かを識別することができますか? –

+0

私はjQuery(document).ajaxError(function(event、request、settings、err))を使っています。これは、ドキュメントがロードされた後のAJAX呼び出しであり、json_last_errorはPHP関数任意のエラー。 –