Codeigniter - AJAX将数组传递给Model并返回

时间:2015-03-11 20:09:50

标签: ajax codeigniter

我尝试将数组发送到控制器,将其传递给模型并获得返回(确保条目成功输入到数据库中)。我可以在DBase中正确添加它,但是我收到了返回错误并且无法弄清楚原因。这段代码可以工作,但是如果我在outpuString下面移动json_encode行,我会收到一个错误(但仍会添加到dbase)。如何验证记录是否已输入?

查看JQuery代码:

function addSongToOndeck(songID, userID) {
            var controllerURL = "<? echo site_url("/getcomps/entercompprocessor/") ?>/";
            $.ajax({
                url: controllerURL,
                type:'POST',
                data: {
                    songID: songID,
                    userID: userID
                 },
                dataType: 'json',
                success: function(outputString){
                     $('#returnMessage').append(outputString);
                },
                 error: function( xhr, status, errorThrown ) {
                    alert( "Sorry, there was a problem!" );
                    console.log( "Error: " + errorThrown );
                    console.log( "Status: " + status );
                    console.dir( xhr );
                },// End of success function of ajax form
            }); // End of ajax call 
        }

我的控制器:

function entercompprocessor()
{   
        echo json_encode("Successfully added to competition");

        $data = array(
            'song_id' => $this->input->post('songID'),
            'user_id' => $this->input->post('userID')
        );

        $returned['result']= $this->competitions_model->putOnDeck($data);

}

我的模特:

function putOnDeck($dataArr)
{
    $query = $this->db->insert('on_deck', $dataArr);    
    if($query->affected_rows() > 0)
    {
        return "added!";
    }
    else
    { 
        return "failed!";
    }
}

1 个答案:

答案 0 :(得分:0)

将您的型号代码更改为以下内容:

function putOnDeck($dataArr)
{
    if($this->db->insert('on_deck', $dataArr))
    {
        return "added!";
    }
    else
    { 
        return "failed!";
    }
}

然后在$ outputstring声明之后移动你的json_encode。 codeigniter中的affected_rows()函数正在查看受先前执行的查询影响的现有行。由于您要插入新行,因此返回的值永远不会是&gt; 0