在Ajax调用中调用控制方法,并将数组转换为字符串

时间:2013-10-24 21:17:08

标签: php ajax codeigniter

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

我的Model方法如下:

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-&gt; user_model-&gt; getAll());我使用var_dump(json_encode($ this-&gt; user_model-&gt; getAll()));我可以看到数据作为回应! 感谢

2 个答案:

答案 0 :(得分:0)

编辑:

您需要返回一个json数组

在你的ajax通话集

dataType: "json" 

并在你的fetchEmployees()函数中

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

这会将php数组作为一个字符串传输,当你的ajax函数收到它时,它会变成一个javascript数组。

答案 1 :(得分:0)

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

AJAX响应采用JSON(JavaScript Object Notation)的形式,如果你不首先json_encode,你将得到一个JavaScript ParseError。