2015-09-23 137 views
1

我试图用ajax提交表单,但它始终传递给fail消息。 我是新来的ajax,帮我解决这个错误。Codeigniter:提交表单而不刷新ajax

这里是我的控制器:

public function add_personal() { 
    $id = $this->uri->segment(3); 
    $jid = $this->Jsprofile->get_jsid($id)->jobseeker_id; 
    $data = array(
     'js_personal_title' => $this->input->post('js_personal_title'), 
     'js_personal_desc' => $this->input->post('js_personal_desc'), 
     'tbl_jobseeker_jobseeker_id' => $jid, 
     'tbl_jobseeker_tbl_user_u_id'=>$id 
     ); 
    // echo json_encode($data); 
    $this->load->database(); 
    $this->db->insert('tbl_js_personal',$data); 
} 

这是我的观点:

<form action="" method="POST" id="personal-info" class="form-group"> 
     <input class="form-control" type="text" name="js_personal_title"> 
     <input class="form-control" type="text" name="js_personal_desc"> 
     <input id="submit-p" class="form-control" type="submit" value="Add"> 
</form> 

JS:

$(document).ready(function(){ 
    $("#personal-info").submit(function(e){ 
     e.preventDefault(); 
      var data= $("#personal-info").serializeArray(); 
       $.ajax({ 
        type: "POST", 
        url: 'http://localhost/joblk.com/index.php/jobseeker/add_personal', 
        data: data, 
       success:function(data) { 
           alert('SUCCESS!!'); 
          }, 
        error: function (XHR, status, response) { 
           alert('fail'); 
          } 
      }); 
     }); 
    }); 

为获取值型号:

public function get_jsid($id) { 
     $sql = "SELECT jobseeker_id FROM tbl_jobseeker WHERE tbl_user_u_id = ".$id.";"; 
     return $this->db->query($sql)->row(); 
    } 
+0

你没得到错误? – guradio

+0

请检查您的浏览器控制台是否有错误。 –

+0

你没有将'jobseeker_id'传递到你的ajax url'url:'http:// localhost/joblk.com/index.php/jobseeker/add_personal',' –

回答

2

在AJAX

<script> 
    $(document).ready(function(){ 
     $("#personal-info").submit(function(e){ 
      e.preventDefault(); 
      var title = $("#js_personal_title").val();; 
      var decs= $("#js_personal_desc").val(); 
      $.ajax({ 
       type: "POST", 
       url: '<?php echo base_url() ?>index.php/jobseeker/add_personal', 
       data: {title:title,decs:decs}, 
       success:function(data) 
       { 
        alert('SUCCESS!!'); 
       }, 
       error:function() 
       { 
        alert('fail'); 
       } 
      }); 
     }); 
    }); 
</script> 
在形式

(添加id属性)

<form action="" method="POST" id="personal-info" class="form-group"> 
    <input class="form-control" type="text" id="js_personal_title" name="js_personal_title"> 
    <input class="form-control" type="text" id="js_personal_desc" name="js_personal_desc"> 
    <input id="submit-p" class="form-control" type="submit" value="Add"> 
</form> 

在控制器

function add_personal() 
    { 
     $id = $this->uri->segment(3); 
     //im confusing this part 
     $jid = $this->Jsprofile->get_jsid($id); 

     $data = array(
      'js_personal_title' => $this->input->post('title'), 
      'js_personal_desc' => $this->input->post('decs'), 
      'tbl_jobseeker_jobseeker_id' => $jid[0]['jobseeker_id'], 
      'tbl_jobseeker_tbl_user_u_id'=>$id 
     ); 
     // echo json_encode($data); 

     $this->db->insert('tbl_js_personal',$data); 
    } 

在模型

function get_jsid($id) 
{ 

    $query = $this->db->query("SELECT jobseeker_id FROM tbl_jobseeker WHERE tbl_user_u_id = '$id'"); 
    $result = $query->result_array(); 
    return $result; 
} 

config/autoload.php

$autoload['libraries'] = array('database'); 
+0

没有URI段是3,因为CI忽略'index.php',我已经回显并检查了它。 –

+0

好吧,然后让它4,并检查 –

+0

我还是一样的答案 –

1
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript" language="javascript"> 
     $(document).ready(function(){ 
     $("#submit-p").click(function(e){ 
      e.preventDefault(); 
      var title = $("#js_personal_title").val();; 
      var decs= $("#js_personal_desc").val(); 
      $.ajax({ 
       type: "POST", 
       url: '<?php echo base_url() ?>index.php/jobseeker/add_personal', 
       data: {title:title,decs:decs}, 
       success:function(data) 
       { 
        alert('SUCCESS!!'); 
       }, 
       error:function() 
       { 
        alert('fail'); 
       } 
      }); 
     }); 
    }); 

      </script> 

只是尝试添加上面的jquery脚本也试图在模型或控制器中回显您的结果,以便您可以确保控制器和模型没有错误,并返回结果是否有任何json问题?

在控制器

function add_personal() 
    { 
     $id = $this->uri->segment(3); 
     //im confusing this part 
     $jid = $this->Jsprofile->get_jsid($id); 

     $data = array(
      'js_personal_title' => $this->input->post('title'), 
      'js_personal_desc' => $this->input->post('decs'), 
      'tbl_jobseeker_jobseeker_id' => $jid[0]['jobseeker_id'], 
      'tbl_jobseeker_tbl_user_u_id'=>$id 
     ); 
     // echo json_encode($data); 

     $this->db->insert('tbl_js_personal',$data); 
     echo json_encode($data); 
     exit; 
    } 
+0

如果你发现错误,请更新它是什么,好奇心知道什么是问题。 –

2

试试这个:

查看

<form action="" method="POST" id="personal-info" class="form-group"> 
     <input class="form-control" id="uri_segment_id" type="hidden" value="<?php echo $this->uri->segment(3); ?>"> 
     <input class="form-control" type="text" name="js_personal_title"> 
     <input class="form-control" type="text" name="js_personal_desc"> 
     <input id="submit-p" class="form-control" type="submit" value="Add"> 
</form> 

JS

$(document).ready(function(){ 
    $("#personal-info").submit(function(e){ 
     e.preventDefault(); 
     var id = $('#uri_segment_id').val(); 
      var data= $("#personal-info").serializeArray(); 
       $.ajax({ 
        type: "POST", 
        url: 'http://localhost/joblk.com/index.php/jobseeker/add_personal/'+id, 
        data: data, 
       success:function(data) { 
           alert('SUCCESS!!'); 
       }, 
       error: function (XHR, status, response) { 
           console.log(status+' --- '+' --- ' + response); 
       } 
      }); 
     }); 
    }); 
+0

不,网址没有变化 –

+0

你试过'$(“#submit-p”)。点击(函数(e)'这样吗? –