echo json_encode($ data)不起作用

时间:2015-09-23 17:54:41

标签: javascript php jquery json

我尝试通过使用此语法(服务器端)回显数组来回应ajax请求

 echo json_encode($a);

在我的客户端,我有这个功能:

$.ajax({
            url:'loaddata.php',
            dataType:'json',
            success:function(data){
                alert(data);
            }
        });

但没有任何反应。问题出在哪儿?为什么json_encode()不起作用?

3 个答案:

答案 0 :(得分:1)

假设"没有任何事情发生" 而您的$.ajax缺少error处理程序,我会假设您的PHP代码输出一些致命错误;因此,AJAX不会触发任何事情。

这是您想要照顾的内容

PHP

  • header('Content-Type: Application/json')添加到您的success回调文件中,以便将回复解析为JSON
  • 确保$a是一个数组,json_encode()接受array

的JavaScript

error处理程序添加到$.ajax

$.ajax({
            url:'loaddata.php',
            dataType:'json',
            success:function(data){
                console.log(data);
            },
            error: function(){
                console.log('something went wrong');
            }
});

不使用alert(),而是使用console.log(data)并使用开发工具,网络标签(推荐)或控制台日志标签跟踪输出。

答案 1 :(得分:0)

假设您编码的数据是评论者声明的数组,您还需要设置

$a = array("key" => "value");
header('Content-Type: application/json');
echo json_encode($a);

在PHP脚本中。

答案 2 :(得分:-1)

这里没有足够的信息来确定问题,但如果没有任何事情发生,那么loaddata.php就不存在了。您确定该文件存在于正确的位置并且名称是否正确?

另一种可能性是PHP代码中的$ a变量具有空值。

您是否通过更改字符串验证了ajax调用的工作原理?像alter(' test')之类的东西?如果那表明那么ajax url应该没问题,那么问题将在PHP方面。