ajax从json_encode()获取空数组

时间:2019-10-27 13:57:05

标签: javascript php json ajax

所以我有这个php类,其中有一个可以从PSQL数据库获取用户的函数,但AJAX始终在控制台中记录空数组:

<form>
  <select name="options">
    <option value="option1">A</option>
    <option value="option2">B</option>
    <option value="option3">C</option>
    <option value="option4">D</option>
  </select>
</form>

<p>I want the option names (A, B, C) and values (option1, option2, option3)
to be confiurable, <br>sometimes there might be 3 values
sometimes 10, I have no control over this.</p>

我使用phphandler文件从ajax调用函数 :

public function getUsers(){
        $query = pg_query(self::$DBH, "select id, name, email, admin from users order by name;");
        $result = array();
        $i = 0;
        while ($row = pg_fetch_row($query)) {
            $result[$i] = $row;
            $i++;
        }
        return $result;
    }

最后还有AJAX呼叫

<?php
    include_once $_SERVER['DOCUMENT_ROOT'].'/bdd.php';
    require_once 'modele_backend.php';
    $module = new Modele_Backend();
    echo json_encode($module -> getUsers());



?>

问题是js一直在控制台中显示空数组。

json_encode可以正常工作,因为json_last_error = 0。

我尝试将getUsers()函数的返回值替换为

$(document).ready(function(){
                $("#user_email").on("input", function(){
                    // Print entered value in a div box
                    $.ajax({
                        url: 'modules/mod_backend/backendHandler.php',
                        type: 'post',
                        dataType: 'json',
                        success: function(response) { console.log(response); }
                    });
                });
            });

测试该函数是否能够对我的数组进行编码,并且确实在页面上显示为JSON,因此这不是我的数组问题的编码。仍然,当AJAX获得json_encode函数的结果时,它仍显示一个空数组。

感谢您的帮助!

死灵。

2 个答案:

答案 0 :(得分:0)

解决方案1 ​​ 您必须在回显

之前在php文件中设置标头的内容类型
header('Content-type: application/json');

解决方案2 将ajax代码中的dataType更改为html 或将其删除以返回默认值dataType (default: Intelligent Guess (xml, json, script, or html))

,然后使用javascript JSON.parse()方法将返回的字符串转换为json。

答案 1 :(得分:0)

原来是根本不是json_encode的问题,这是我的静态数据库类的问题,但是我两次被AJAX调用包含在内。

仍然感谢您的支持