【问题标题】:echo json_encode ($data) doesn't work [closed]echo json_encode($data)不起作用[关闭]
【发布时间】:2015-09-23 17:54:40
【问题描述】:

我正在尝试通过使用这种语法(服务器端)回显一个数组到 ajax 请求

 echo json_encode($a);

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

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

但什么也没发生。问题出在哪里?为什么json_encode() 不起作用?

【问题讨论】:

  • 因为您使用的是 AJAX,所以您必须在返回给函数的数据中查找结果。
  • 检查浏览器控制台的网络选项卡以查看返回的所有内容。
  • 这是您要确保“它正常工作”的内容: - 确保 $a 是一个数组,json_encode() 接受 array。 - 不要使用alert(),而是使用console.log(data) 并使用开发工具、控制台日志选项卡跟踪输出
  • ... 或者您可以在 Brownser 的开发工具中检查您的响应以查看任何类型的错误...

标签: javascript php jquery json


【解决方案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) 并使用开发工具、网络选项卡(推荐)或控制台日志选项卡跟踪输出。

【讨论】:

    【解决方案2】:

    假设您正在编码的数据是评论者所说的数组,您还需要设置

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

    在 PHP 脚本中。

    【讨论】:

      【解决方案3】:

      这里没有足够的信息来确定问题,但如果什么都没有发生,那么可能是 loaddata.php 不存在。您确定该文件存在于正确的位置并且名称正确吗?

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

      您是否通过更改字符串来验证 ajax 调用是否有效?像alter('test')这样的东西?如果这样显示,那么 ajax url 应该没问题,那么问题就出在 PHP 方面。

      【讨论】:

      • 请不要使用答案来澄清问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2017-01-08
      • 1970-01-01
      • 2015-02-16
      相关资源
      最近更新 更多