2012-02-07 6 views
2

なぜか、私はjson呼び出しから何も戻っていません。私はコンテンツをエコーし​​、ブラウザのURLバーに貼り付けて動作させています。ここにいくつかの種類のドメインの問題がありますか?PHPからJSON呼び出しを作成する

$connect = open_db(); 
$result = mysql_query("SELECT search_id, search_term FROM search WHERE search_poi_id IS NULL"); 
while($row = mysql_fetch_assoc($result)){ 
    $call = "http://maps.google.com/maps/api/geocode/json?address=".$row["search_term"]."&sensor=false"; 
    $json = file_get_contents($call); 
    print_r($json); 
} 
close_db($connect); 
+0

は、*は任意の*ウェブサイトの仕事をしていますか?ポート80はサーバー上でブロックされていますか? – Ryan

+0

AJAX/PHPの問題をデバッグする私の解決策は、単一の 'echo( 'Hello World!');を除いてすべてのPHPコードをコメントアウトして、JavaScriptを取得してレスポンスを' alert() 'することです。それを働かせることができれば、問題はあなたのPHPにあります。そうでない場合は、エラーのあるJavaScriptがある可能性があります。 –

+0

@watcher:OPはすでに 'print_r'を使用してデバッグ中です。 – Ryan

答えて

1

file_get_contents()は、外部URLに対しては必ずしも機能しない可能性があります。 php.netから:

fopenラッパーが有効になっている場合、URLはこの関数でファイル名として使用できます。ファイル名の指定方法の詳細については、fopen()を参照してください。さまざまなラッパーの能力、使用法に関する注釈、およびそれらが提供する事前定義済みの変数に関する情報へのリンクは、「サポートされているプロトコルとラッパー」を参照してください。

+0

そのドキュメントにリンクできますか? – Ryan

+0

どのように動作させるか、より良い方法があればそれをどうすれば管理できますか? –

+0

私は試しました... echo(file_get_contents( '... googleのアドレス...'));それはうまくいきませんでした –

0

エコー処理が機能しますか?したがって、有効なJSONはありますか?そして今、問題は何ですか? JSONを配列にする場合は、json_decode()が必要です。

詳細はhttp://php.net/manual/en/function.json-decode.phpを参照してください。

0

あなたは、さらにデータを処理したい場合は、あなたがこのようにそれを行うことができます:あなたは、あなたがやりたいことができます配列の配列である必要があり、このデータでは

$data = array(); 
$connect = open_db(); 
$result = mysql_query("SELECT search_id, search_term FROM search WHERE search_poi_id IS NULL"); 
while($row = mysql_fetch_assoc($result)){ 
    $call = "http://maps.google.com/maps/api/geocode/json?address=".$row["search_term"]."&sensor=false"; 
    $data[] = json_decode(file_get_contents($call)); 
} 
close_db($connect); 

foreach($data as $d) 
    print_r($d); 

...

EDIT:動作しない

file_get_contents()場合は、これを試してみてください。

$data = array(); 
$connect = open_db(); 
$result = mysql_query("SELECT search_id, search_term FROM search WHERE search_poi_id IS NULL"); 
while($row = mysql_fetch_assoc($result)){ 
    $call = "http://maps.google.com/maps/api/geocode/json?address=".$row["search_term"]."&sensor=false"; 
    $handle = fopen($call, "rb"); 
    $contents = stream_get_contents($handle); 
    fclose($handle); 
    $data[] = json_decode($contents); 
} 
close_db($connect); 

foreach($data as $d) 
    print_r($d); 
+0

file_get_contents($ call)は何も返しませんが、$ callの内容をブラウザのURLバーに入れてjsonコードを返します。 –

+0

Ahaa、私はfile_get_contents()がsthを返すと思った...私の投稿を編集して他の方法を試してみる。 – shadyyx

+0

$ call = "http://maps.google.com/maps/api/geocode/json?address=&sensor=false"; {"results":[]、 "status": "ZERO_RESULTS"}ここで$ call = "http://maps.google.com/maps/api/geocode/json?address=TS25 4HQ&sensor = false"となります。私はjsonコードを取得するブラウザに配置されている以外は何も返しません! –

関連する問題