2011-07-17 56 views
0

我試圖通過AJAX將記錄添加到我的數據庫,但是當我嘗試了我的代碼,我得到 500 HTTP錯誤代碼; 這是函數時在控制器獲取jQuery的阿賈克斯與笨工作

function sections_add() { 
     $this->load->model('section_model'); 

     $name = $_POST['name']; 
     $slug = $_POST['slug']; 
     $sec = $_POST['description']; 

     $options = array(
      "description"=>$sec, 
      "slug"=>$slug, 
      "category"=>$name 
     ); 

     $this->section_model->add($options); 
    } 

提交這在模型的功能添加記錄

function add($options = array()) { 
      $this->db->insert('sections',$options); 
      if($this->db->affected_rows() > 0) { 
        return true; 
       } 
       return false; 
     } 

而且這是我的jQuery代碼 NB:BASE_URL定義我的基本URL

$(function() { 
    $('#save_btn').click(function(e) { 
     var name = $('#name').val(); 
     var slug = $('#slug').val(); 
     var des = $('#description').val(); 

     var data = "name="+name+"slug="+slug+"description="+des; 
     var url = base_url+"admin/sections/add"; 
     $.ajax({ 
      url:url, 
      type:'post', 
      cache:false, 
      data:data, 
      success:function() { 
       alert('Success'); 
      } 
     }); 
     e.preventDefault() 
    }); 
}); 

請我應該怎麼做,才能擺脫HTTP 500錯誤

+0

你確定這就是使用BASE_URL正確的方法是什麼?不應該是「url:」http://yoursite.net/admin/sections/add「或」<?php echo site_url('admin/sections/add'); ?>「 – Brad

回答

0

就趕緊看這個,它看起來像你的提交:

管理/節/加

與之相對應的是sections_add方法名稱:

管理/ sections_add

但那會返回404而不是500.如果您的方法名稱正確,請嘗試將您的數據傳遞爲:

var data = { 
     name: $('#name').val(), 
     slug: $('#slug').val(), 
     des: $('#description').val() 
    } 
+0

我的路由規則將admin/sections /添加爲admin/admin/section_add,因爲控制器位於名爲admin的子文件夾中 – MrFoh

0

您是否啓用了CSRF保護?如果是這樣,您必須將csrf_token添加到POST中。

如果您正在從form_helper與form_open形式,尋找csrf_token_name隱藏變量。最終,您可以使用http://api.jquery.com/serialize/

0

可能是我錯過了一些東西,但我不知道您是如何回答結果的。不看,沒有什麼呼應,請嘗試添加...

  $data['success'] = $this->section_model->add($options)?1:0; 
      echo json_encode($data); 
在section_add

()