我正在尝试调用我的控制器方法,该方法在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()));我可以看到数据作为回应! 感谢
答案 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。