json_encode()什么都不返回

时间:2011-05-10 04:58:49

标签: php javascript ajax json

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

PHP代码如下

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

我也有一个看起来像这样的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时,我得到一个空白页
  • 在我的本地服务器上正常工作
  • 该页面托管在雅虎上(不确定它是否有所作为)

4 个答案:

答案 0 :(得分:2)

如果数组显示就像你在问题文本中提到的那样,那就出错了。该页面应该显示类似

的内容
["IBM","EDS","MICROSOFT"]

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

答案 1 :(得分:1)

尝试使用function_exist,因为在某些服务器上可以禁用json *函数或将php配置为不使用它

答案 2 :(得分: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);
?>

答案 3 :(得分:0)

首先执行print_r($companies)然后执行echo $jsonstring;删除print_r行,因为当然响应不是有效的JSON字符串。

还要尝试在回显之前添加header("Content-Type: text/plain");,并确保在任何输出之前放置该字符串。