即使返回错误,ajax也会成功运行

时间:2014-08-12 13:55:12

标签: php jquery mysql ajax codeigniter

我有一个AJAX脚本,应该在用户登录时将数据插入到mysql数据库中。但是它当前正在运行成功函数,即使'success'=>在控制台中返回'false'。

她是我的代码

 $(document).ready(function() {

$("#addfav").click(function() {

 var form_data = {heading: $("#vidheading").text(), embed : $("#vidembed").text()};

  jQuery.ajax({
      type:"POST",
      url:"http://localhost/stumble/Site/add_to_fav",
      dataType: "json",
      data: form_data,
      success: function (data){

              alert("This Video Has Been Added To Your Favourites");
          console.log(data.status);

      },

    error: function (data){
           if(data.success == false){
           alert("You Must Be Logged In to Do That");
        console.log(data.status); 


        };
    }
  });
})

}) 

这是php,请记住我的项目是在codeigniter。

public function add_to_fav(){
 header('Content-Type: application/json');

      $this->load->model('model_users');
      $this->model_users->add_favs();    
} 

这是向db

添加数据的实际模型
    public function add_favs(){
     if($this->session->userdata('username')){
     $data = array(
        'username' => $this->session->userdata('username'),
      'title' => $this->input->post('heading'),
      'embed' => $this->input->post('embed')
      );

      $query = $this->db->insert('fav_videos',$data);
      echo json_encode(array('success'=>'true'));
        } else {

         echo json_encode(array('success'=>'false'));
      }

  }    

感谢您的任何建议!

2 个答案:

答案 0 :(得分:5)

您没有返回错误。

您将返回包含数据200 OK的{​​{1}}。

你可以在你的jQuery成功函数中处理它,或send a different status code(看起来a 403 error适合这里)。

答案 1 :(得分:0)

您必须记住异步请求发生的错误,并且PHP后端发生的错误不同。您的错误发生在PHP级别,就JavaScript的前端而言,PHP返回有效的HTML。您需要检查返回的JSON中的“success”变量是否为真。