2012-02-07 54 views
2

不知道为什么,但我没有从json调用中得到任何回复。我回应了内容,并粘贴到我的浏览器的网址栏,它的工作原理。我需要解决一些域名问题吗?从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 2012-02-07 15:04:59

+0

我的调试AJAX/PHP问题的解决方案是将所有的PHP代码注释掉,除了一个'echo('Hello World!');'然后试着让JavaScript'alert()'回应出。如果你能解决这个问题,那么问题出现在你的PHP中。如果没有,可能是您的JavaScript有错误 – 2012-02-07 15:08:29

+0

@watcher:OP已在使用'print_r'进行调试。 – Ryan 2012-02-07 15:09:56

回答

1

file_get_contents()可能并不总是适用于外部URL。从php.net:

如果fopen包装已启用,可以使用URL作为该函数的文件名。有关如何指定文件名的更多详细信息,请参阅fopen()。请参阅支持的协议和包装以获取有关各种包装具有哪些功能的信息的链接,关于它们的用法的注释以及它们可能提供的任何预定义变量的信息。

+0

你能链接到那个文档吗? – Ryan 2012-02-07 15:13:06

+0

我如何才能使其工作,或者如果他们是更好的方式,我将如何管理它? – 2012-02-07 15:23:10

+0

我试过... echo(file_get_contents('... google's address ...'));它没有工作 – 2012-02-07 15:24:07

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); 

有了这个数据应该是一个数组,然后你可以做任何你想做的数组...

编辑:

如果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代码。 – 2012-02-07 15:22:26

+0

阿哈,我以为file_get_contents()返回......将编辑我的帖子来尝试其他方法。 – shadyyx 2012-02-07 15:33:48

+0

$ call =“http://maps.google.com/maps/api/geocode/json?address=&sensor=false”;返回{“results”:[],“status”:“ZERO_RESULTS”}其中as $ call =“http://maps.google.com/maps/api/geocode/json?address=TS25 4HQ&sensor = false”;除了当它被放置在浏览器中时我什么也没有返回,我得到了json代码! – 2012-02-07 15:44:59