【发布时间】:2013-10-24 21:17:08
【问题描述】:
我正在尝试调用我的控制器方法,该方法在 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()));我可以看到响应数据! 谢谢
【问题讨论】:
-
你需要
echo回复,不要使用return:echo json_encode(...) -
是的,请将其放入新消息中,以便我接受它作为答案
-
非常感谢 :)
-
只是为了确保我理解我们为什么使用 json_encode:因为我的输出是一个数组,我们需要使用 json_encode,并且在 ajax 调用中,当数据类型为“Json”时,它会解码为一个数组!但是,如果我的输出只是像 count() 这样的单个元素,那么在这种情况下,我不需要使用数据类型:“json”和 json_encode,对吗?在控制器中使用 echo 也是一个好习惯吗?
标签: php ajax codeigniter