2011-05-10 33 views
1

我有一个解析使用json_encode()方法的数组,但返回的PHP脚本空白json_encode()任何回报

的PHP代码如下

$companies = $db->getCustomerNames(); 
print_r($companies) 
if (!empty($companies)){ 
$jsonstring = json_encode($companies); 
echo $jsonstring ; 
} 
else{ 
    echo 'false'; 
} 
  • $公司被填充,我可以打印出来呢

我也有一个JavaScript看起来像这样

jQuery.ajax({ 

    type: "GET", 
    url: "http://localhost/myscript.php" 
    success: function(msg) { 
     companies = jQuery.parseJSON(msg); 
     //DO OTHER STUFF WITH companies 
    } 
}); 
  • 的PHP脚本连接到数据库,并呼应JSON编码数组
  • JavaScript的使用AJAX获取数组这样我就可以使用它的内容
  • 当我打http://localhost/myscript.php我得到一个空白页
  • 工程罚款我的本地服务器上
  • 该页面在雅虎(不知道这是否有差别)
+2

如何'json_encode()'返回的输出呢?这是'print_r()'输出。 – BoltClock 2011-05-10 05:00:24

+0

你对json_encode和json_decode的问题感到困惑吗? – deceze 2011-05-10 05:01:44

+1

在你使用'json_encode()'和'echo'结果的地方显示你的PHP代码 – Phil 2011-05-10 05:02:18

回答

1

尝试使用function_exist因为某些服务器JSON *功能可以被禁用或PHP被设置为不使用它

+0

Spot。 json_encode函数不存在。锄头是雅虎的愚蠢。关于如何解决问题的任何想法? – Maro 2011-05-10 05:55:40

+1

@Maro Try http://upgradephp.berlios.de – deceze 2011-05-10 06:08:35

+0

我登录到雅虎CP。在PHP部分下,版本被设置为PHP4,我将其更改为PHP5,现在我的代码正常工作。谢谢Evgeniy Skulditsky – Maro 2011-05-10 21:50:56

2

主办如果数组DISPLA像你在你的问题的文字中提到,然后有什么是错的。该页面应显示类似于

["IBM","EDS","MICROSOFT"] 

您是否也可以发布相关的PHP代码?

+0

谢谢您的建议。看来我之前看到的数组是print_r的结果。现在我没有得到任何东西。就好像json_encode()不返回任何东西。我编辑了我的帖子以反映问题 – Maro 2011-05-10 05:27:53

+0

@Maro您正在填写'$ companies',但您正在检查'$ customers'。这是一个错字吗? – JohnP 2011-05-10 05:35:24

+0

是的,这是一个错字,实际的代码有全美$的公司我已经用实际文件 – Maro 2011-05-10 05:39:04

0

您的js是正确的,正如JohnP在您点击http://localhost/myscript.php时所说的,您应该将数组显示为[“IBM”,“EDS”,“MICROSOFT”]。检查您是否有类似下面的代码:

<?php 
$a = array (0 =>'IBM' ,1=>'EDS' ,2=>'SUN' ,3=>'GOOGLE' ,4 => 'ORACLE'); 
echo json_encode($a); 
?> 
+0

我也期待这个,好笑的是它可以在2或我的本地服务器上正常工作。只是没有在雅虎 – Maro 2011-05-10 05:37:15

0

首先,你做print_r($companies)那么你就echo $jsonstring;取出的print_r线,因为ofcourse响应将不会是一个有效的JSON字符串。

在你做echo之前,还要尝试添加header("Content-Type: text/plain");,并确保将该字符串放在ANY输出之前。

+0

我已经尝试了两个,但我得到了相同的确切行为 – Maro 2011-05-10 05:51:29

+0

而且它将成为一个空白页面,如果你没有做JavaScript的精通,把内容放在页面上。因为AJAX本身并不在屏幕上打印,但jqXHR对象保存了响应。在Chrome中使用Firebug或Web Developer工具并打开网络选项卡,查看是否有任何AJAX会话继续,并检查您从您的收到的响应脚本 – 2011-05-10 06:22:34

+0

我明白,我的PHP脚本回应了JSON数组,这个脚本是通过jQuery AJAX调用从应用程序调用的,它通过数组并执行诸如自动完成和一些其他验证之类的东西,这也可以正常工作本地,但是一旦我部署到雅虎托管的服务器,它就停止工作。 – Maro 2011-05-10 21:58:10