所以我使用AJAX将数组发送到控制器
AJAX
$('#concept').click(function(){
$.ajax({
url: 'http://localhost:8888/index.php/trial/getValues',
type:'POST',
dataType: 'json',
data: course,
error: function(){
$('#testing1').append('<p>goodbye world</p>');
},
success: function(result) {
var htmlStr = '';
$.each(result, function(a, b){
htmlStr += b.qText + '<br />';
});
alert("YEAH YOU WAS SUCCESSFUL");
$('#testing1').append(htmlStr);
} // End of success function of ajax form
}); // End of ajax call
当然是一个包含两个字符串的javascript数组。
控制器
function getValues(){
$playlist = $this->input->post('course');
$this->load->model('get_db');
$data = $this->get_db->getAll($playlist);//$var inside ()
$this->output->set_content_type('application/json');
$this->output->set_output(json_encode($data));
return $data;
}
模型
class Get_db extends CI_Model{
function getAll($pList){
$query=$this->db->query("SELECT * FROM questions WHERE playlistID= '$pList[0]' OR playlistID='$pList[1]'");
return $query->result();
}
}
我已经完成了硬编码,可以确认控制器和模型功能是否正常工作。问题在于我认为ajax中的'data'参数。我只是不相信数据以正确的方式传递给控制器。我无休止地搜索其他问题,我知道有类似的问题,但我在这种情况下找不到解决方案。
提前感谢您提供的任何信息:)
答案 0 :(得分:0)
您必须echo
控制器中的JSON编码数据,而不是返回它。在Ajax回调中,您必须在JSON.parse()
调用之前result
$.each(..)
。
<强>控制器强>
function getValues(){
$playlist = $this->input->post('course');
$this->load->model('get_db');
$data = $this->get_db->getAll($playlist);//$var inside ()
echo json_encode($data);
// $this->output->set_content_type('application/json');
// $this->output->set_output(json_encode($data));
// return $data;
}
<强> Ajax的呼叫强>
$.ajax({
url: 'http://localhost:8888/index.php/trial/getValues',
type:'POST',
dataType: 'json',
data: course,
error: function(){
$('#testing1').append('<p>goodbye world</p>');
},
success: function(result) {
var htmlStr = '';
var jsonData = JSON.parse(result);
$.each(jsonData, function(a, b){
htmlStr += b.qText + '<br />';
});
alert("YEAH YOU WAS SUCCESSFUL");
$('#testing1').append(htmlStr);
}