在 Ajax 调用中调用控制方法,以及将数组转换为字符串时出错


Calling a control method in an Ajax call and error for converting array to string

我正在尝试调用我的控制器方法,该方法在 Ajax 调用中调用模型方法。

这是我的Ajax电话:

        $.ajax({
                    type: "POST",
                    async: false,
                                            dataType: "json",
                    url: "<?php echo base_url('siteController/fetchEmployees') ?>",
                    success: function(data) 
                    {
                        html = "<table id='myTable'><thead><tr id='test'><th>ID</th><th>FName</th><th> LName</th></tr></thead><tbody id='contentTable'>";
                        for (var i = 0; i < data.length; i++)
                        {
                            html = html + "<tr  id='trResponses' ><td><div >" + data[i]['ID'] + "</div></td><td><div >" + data[i]['FName'] + "</div></td><td><div >" + data[i]['LName'] + "</div></td></tr>";                        
                        }
                         html = html + "</tbody></table>";
                         $("#resultFrm2").html(html);
                    },
                    error: function() {
                        alert('error');
                    }                
                });

我的站点控制器具有以下方法:

 public function fetchEmployees() 
 {
    $this->load->model('user_model');
    return json_encode($this->user_model->getAll());
}

我的模型方法如下:

public function getAll() 
{
    $q = $this->db->get('users');        
    if ($q->num_rows() > 0) {
        foreach ($q->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
}

但由于我在控制器中的返回是一个数组,因此出现以下错误:

A PHP Error was encountered
Severity: Notice
Message: Array to string conversion

你知道我该如何处理这个问题吗?

如果我的问题不清楚,请让我知道您需要进一步澄清哪一部分?

添加:我做了你的所有建议,并在这里提到了我的所有更改!但是现在没有 Ajax 的输出,但是如果在我的控制器中而不是返回 json_encode($this->user_model->getAll());我使用 var_dump( json_encode($this->user_model->getAll()));我可以看到响应的数据!谢谢

已编辑:

您需要返回一个 json 数组

在 ajax 调用集中

dataType: "json" 

并在您的 fetchEmployees() 函数中

echo json_encode($this->user_model->getAll());

这会将 php 数组作为字符串传输,当 ajax 函数接收到该字符串时,该字符串将转换为 javascript 数组。

你的 siteController 有问题 - echo 接受并返回一个字符串,你正在传递一个数组。您想将echo($this->user_model->getAll());更改为return json_encode($this->user_model->getAll());

AJAX响应采用JSON(JavaScript对象表示法)的形式,如果您不先json_encode,您将获得JavaScript ParseError。