Jquery AJAX JSON" parsererror"笨

时间:2018-03-19 01:46:44

标签: jquery json ajax codeigniter

当用户尝试在我的网站上添加书签和文章时,我正在执行AJAX调用。这一直在起作用,我不知道会发生什么变化。我正在返回JSON和错误的调用错误" parsererror"。没有其他细节。我在后台测试PHP代码,它工作正常,没有问题。我读了几篇关于这个主题的帖子,它提到添加"标题('内容类型:application / json');"我做了,但仍然没有运气。当我在后台测试时,我会收到回复{" status":" X"," new_token":" 9b5a824a"}。

脚本

    $(document).on("click","#bookmark",function(a){
    a.preventDefault();
    var t=$(this).attr("bookmark_id"),
    e=$("input[name=token").val(),
    s=$(this);
    $.ajax({
        type:"POST",
        url:"bookmark",
        data:{token:e,bookmarkid:t},
        dataType:"json",
        success:function(data)
        {
            if(data.status == 'X')
            {
                s.find("i").addClass("green");
                $("input#token").val(data.new_token);
                s.removeAttr("href");
            }
        },
        error : function(request,error)
        {
            alert(error);
        }
    })
}),

Codeigniter PHP代码

    public function bookmark()
{
    $this->load->model('User_model');
     if($this->User_model->add_bookmark($this->input->post('bookmarkid')))
        {
            $data['jsondata']['status']    = 'X';
            $data['jsondata']['new_token'] = $this->tokens->token();
            $this->load->view('json_view', $data);
        }
        else
        {
            $data['jsondata']['status']    = '';
            $data['jsondata']['new_token'] = $this->tokens->token();
            $this->load->view('json_view', $data);
        }
}

JSON视图

<?php
header('Content-type: application/json');
echo json_encode($jsondata);
?>

1 个答案:

答案 0 :(得分:0)

实际上,您不必为ajax调用呈现视图文件。

控制器:

public function bookmark()
{
    $this->load->model('User_model');
     if($this->User_model->add_bookmark($this->input->post('bookmarkid')))
        {
            $data = array('status' => 'X','new_token' => $this->tokens->token());
        }
        else
        {
            $data = array('status' => '','new_token' => $this->tokens->token());
        }
        echo json_encode($data);
}