0

我正在尝试调用我的控制器方法,该方法在 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');
                    }                
                });

我的 siteController 有以下方法:

 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 的输出但是如果在我的控制器中而不是 return json_encode($this->user_model->getAll()); 我使用 var_dump( json_encode($this->user_model->getAll())); 我可以看到响应的数据! 谢谢

4

2 回答 2

0

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

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

于 2013-10-24T21:27:25.983 回答
0

编辑:

您需要返回一个 json 数组

在您的 ajax 调用集中

dataType: "json" 

并在您的 fetchEmployees() 函数中

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

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

于 2013-10-24T21:25:56.270 回答