Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过ajax将数组传递给控制器_Ajax_Codeigniter_Post - Fatal编程技术网

通过ajax将数组传递给控制器

通过ajax将数组传递给控制器,ajax,codeigniter,post,Ajax,Codeigniter,Post,因此,我使用AJAX向控制器发送一个数组 阿贾克斯 模型 我已经做了硬编码,可以确认控制器和模型功能正常工作。我认为问题在于ajax中的“data”参数。我只是不相信数据是以正确的方式传递给控制器的。我不断地搜索其他问题,我知道也有类似的问题,但我还没有找到解决办法 提前感谢您提供的任何信息:)您必须在控制器中回送JSON编码的数据,而不是返回它。在Ajax回调中,必须在调用$之前JSON.parse()结果 控制器 function getValues(){ $playlist = $

因此,我使用AJAX向控制器发送一个数组

阿贾克斯

模型

我已经做了硬编码,可以确认控制器和模型功能正常工作。我认为问题在于ajax中的“data”参数。我只是不相信数据是以正确的方式传递给控制器的。我不断地搜索其他问题,我知道也有类似的问题,但我还没有找到解决办法


提前感谢您提供的任何信息:)

您必须
在控制器中回送
JSON编码的数据,而不是返回它。在Ajax回调中,必须在调用
$之前
JSON.parse()
结果

控制器

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);
    }
$.ajax({
网址:'http://localhost:8888/index.php/trial/getValues',
类型:'POST',
数据类型:“json”,
数据:当然,
错误:函数(){
$(“#testing1”)。追加(“再见世界”

”; }, 成功:功能(结果){ var htmlStr=''; var jsonData=JSON.parse(结果); $.each(jsonData,function(a,b){ htmlStr+=b.qText+'
'; }); 警惕(“是的,你成功了”); $('#testing1').append(htmlStr); }
首先尝试将其编码为JSON。我不确定这是否是必需的,但这可能会使事情变得更简单。我将如何以及在何处这样做我不确定是否遗漏了某些内容,但根据您的代码,模型正在查询中这样做:
。其中playlist=array(1,2,3)
。您是否应该使用其他codeigniter函数,如
where_in
或首先提取数组?@ISuthanBala是的,请参阅编辑我也看到,您在控制器中返回数据,而不是回显。只显示回显数据并返回到ajax调用嘿,感谢您的响应。因此,当我集成此代码时,我得到了“未捕获的语法错误:意外标记o”错误。我还担心,当我进行硬编码以确保控制器和模型工作时,我使用的数组是一个php数组。但是,现在我正在尝试发送一个javascript数组。我想知道这是否会干扰我所做的php编码。这可能是由“$data”的内容引起的(解析时)。也许你可以提供更多的信息,或者更好的是提供一个测试站点/小提琴,我可以在那里查找错误。result的内容也会很有帮助。哦,如果你没有对set_content_type(..)进行注释,那么你可能不能在客户端解析可能与错误消息相符的结果。
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();

    }
}
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({
    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);
    }