让PHP等到JSON加载?

时间:2014-01-27 00:35:47

标签: php ajax json file-get-contents

我有这个:

<?php 
$phpjson = (file_get_contents('icons_ajax.php?alls'), true);
var_dump ($phpjson);
 ?>

它返回:

警告:file_get_contents(icons_ajax.php?alls)[function.file-get-contents]:无法打开流:第184行/home/flamenco/public_html/icons_cogo_20.php中没有此类文件或目录 NULL

我怀疑这是因为JSON尚未加载。

任何让PHP等到加载JSON的方法吗?

这是包含问题的测试页:http://flamencopeko.net/icons_cogo_20.php

3 个答案:

答案 0 :(得分:2)

没有“JSON尚未加载”的事情 在var_dump完成之前,file_get_contents不会被调用 您的错误如下所示:没有此类文件。尽量提供完整的路径。

并替换

$phpjson = (file_get_contents(file_get_contents('icons_ajax.php?alls'), true));

$phpjson = file_get_contents('http://full.path.to/icons_ajax.php?alls');

答案 1 :(得分:2)

首先要做的事情是:嵌套file_get_contents()几乎永远不会解决问题的正确方法。

在英语中,您的代码正在做的是:

  • 阅读本地文件的内容
  • 将该文件的内容视为路径
  • 阅读引用文件的内容

这意味着您尝试获取的路径是持久的,并随着时间的推移而变化。虽然这在技术上并不是无效的,但它几乎肯定是应用程序设计不良的症状,数据库将是更合适的解决方案,

接下来要注意的是没有完全限定的URL(包括方案和域),你的路径是引用本地文件系统上相对于当前工作目录的东西,并且 - 至关重要的 - 查询字符串,如?alls不适用于本地文件系统。在上下文中,您最有可能尝试使用它($_GET),这是HTTP协议的构造。

如果您尝试从远程服务器加载一些JSON,则需要设置如下代码:

$json = file_get_contents('http://remotedomain.com/path/to/file.json');
$object = json_decode($json);
// do stuff with object

答案 2 :(得分:0)

$phpjson = (file_get_contents(file_get_contents('icons_ajax.php?alls'), true));

PHP不是异步的,因此file_get_contents()将阻塞直到它完成,然后var_dump()将被调用,所以你可能只是在你指定的路径上没有文件。