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