2017-06-01 44 views
0

我想通过检查数据从数据库中提取数据。我将数据作为json文件发送,但不起作用。在网络中,它显示的数据不是可以检索的。虽然没有Ajax,我可以从数据库中检索数据。当我更改dataType:'json'时,它不会碰到cotroller。当这个改变为'html',然后触发alert()。ajax无法检索codeignitor中的数据

This is my ajax code 
 
$(document).ready(function() { 
 
     $('#ret_pass').click(function(e) { 
 
      e.preventDefault(); 
 
      var data = { 
 
       u_mail  : $('#email').val(), 
 
       u_ques  : $("#security").val(), 
 
      }; 
 
      console.log(data); 
 
      url = $('#ret_form').attr('action'); 
 
      //console.log(url); 
 
      $.ajax({ 
 
       type:'POST', 
 
       url:url, 
 
       data: data, 
 
       dataType : 'json', 
 
       success: function(res){ 
 
         alert(res.msg);//says undefined 
 
         console.log(res.msg);  
 
       }, 
 
       error: function(res) { 
 
       alert(res.msg); 
 
       alert('error');//also says error! 
 
      }, 
 
      }); 
 

 
     }) 
 
    })
This is controller code 
 
public function ret_pass() 
 
\t { 
 
     header('Content-Type: application/json', true); 
 
     if($this->input->is_ajax_request()) { 
 
      $u_mail = $this->input->post('email'); 
 
      $u_ques = $this->input->post('security'); 
 
      $cond = array(
 
       'u_mail' => $u_mail, 
 
       'u_ques' => $u_ques 
 
      ); 
 
      $query = $this->db->where($cond)->get('tbl_user'); 
 
      $checker = $query->result_array(); 
 
      //if (count($checker) > 0) { 
 
      if (!empty($checker)) { 
 
       //var_dump($results); 
 
       //echo json_encode ($results); 
 
       die(json_encode(array('success' => true, 'msg' => $checker))); 
 
      } else { 
 
       echo "bad search"; 
 
       die(json_encode(array('success' => true, 'msg' => 'invalid search'))); 
 
      } 
 
     } 
 
    }

回答

0

的原因是,你是不是从控制器

public function ret_pass() 
{ 
    header('Content-Type: application/json', true); 
    if($this->input->is_ajax_request()) { 
     $u_mail = $this->input->post('email'); 
     $u_ques = $this->input->post('security'); 
     $cond = array(
      'u_mail' => $u_mail, 
      'u_ques' => $u_ques 
     ); 
     $query = $this->db->where($cond)->get('tbl_user'); 
     $checker = $query->result_array(); 
     //if (count($checker) > 0) { 
     if (!empty($checker)) { 
      //var_dump($results); 
      //echo json_encode ($results); 
      echo (json_encode(array('success' => true, 'msg' => $checker))); 
     } else { 
      //echo "bad search"; 
      echo (json_encode(array('success' => true, 'msg' => 'invalid search'))); 
     } 
    } 
} 

发送任何数据备份通过这样做,你的Ajax调用会得到你所拥有的JSON响应编码,你应该能够在你的Javascript Alert中看到它。

+0

这样做,但只有ajax错误功能被解雇。这意味着它不会发回任何数据。在错误函数中加入 –

+0

,添加{alert(res.responseText)}并查看错误是什么 – crazyglasses