2016-03-25 13 views
2

Farklı numaralar gönderen bir ajax işlevi var. İşte ajax işlevi.ajax işlevi php'ye gitmiyor codeiniter controller

self.giveCashtoChild = function(){ 
      $.ajax({ 
       type: 'POST', 
       url: BASEURL + '/index.php/main/addUserChildrenCash'+"/"+self.selectedchild(), 
       contentType: 'application/json; charset=utf-8' 
      }) 
      .done(function() { 

      }) 
      .fail(function(xhr, status, error) { 
       alert(status); 
      }) 
      .always(function(data){     
      }); 
     } 

self.selectedchild() öylesine Temelde url addUserChildrenCash/2'dir ama sonra CodeIgniter denetleyicisi gidin ve sayfayı değişmez değer 2'dir. İşte denetleyici işlevi. senin CodeIgniter kullanım durumunda

public function addUserChildrenCash($childID){ 
      if (!$this->session->userdata('user_id')){ 
       redirect('main'); // the user is not logged in, redirect them! 
      } 

       $userid= $this->session->userdata('user_id'); 
       $this->load->model('main_page'); 
       $childname = $this->main_page->getChildName($childID, $userid); 

       $data = array(
        'name' => $childname['children_name'] 
       ); 
       $this->load->view('header2_view'); 
       $this->load->view('add_user_children_cash_view' , $data); 
       $this->load->view('footer_view'); 

     } 
+0

CodeIgniter'ın yerleşik CSRF korumasını kullanıyor musunuz? Öyleyse, ajax verileriniz gizli CSRF belirteç alanının değerini içermelidir. Bu, standart form eylemiyle birlikte gönderilen ancak ajax yaptığınızda eksik olan kısımdır. – Sparky

+0

@Sparky Bunun ne olduğundan emin değilim? – FaF

+0

CodeIgniter yapılandırma dosyanızdaki CSRF'yi kontrol edin. Bakınız: http://www.codeigniter.com/user_guide/general/security.html?highlight=csrf#csrf-protection – Sparky

cevap

1

kodunuzu kontrolörü olarak Ajax

var id = self.selectedchild(); # Assign data to here 
$.ajax(
    { 

     type:"post", 
     url: "<?php echo base_url(); ?>index.php/main/addUserChildrenCash", 
     data:{ id:id}, 
     success:function() 
     { 

     } 
     error:function() 
     { 

     } 
     always:function(){ 

     } 
    }); 

yılında

olmalıdır Sen POST olarak ajax tanımlarsınız, ancak Yani GET

type: 'POST', 
url: BASEURL + '/index.php/main/addUserChildrenCash'+"/"+self.selectedchild(), 

aracılığıyla göndermeden

+0

Denedim, neden çalışmadığından emin değilim, tüm değişkenleri alıyorum. – FaF

+0

'console.log (id)' ve konsol kontrol et –

+0

bunu ül ü kullanarak değiştirdiniz mi? ? –

0
self.giveCashtoChild = function(){ 
      var id = self.selectedchild(); 
      $.ajax({ 
       type: 'POST', 
       url: BASEURL + '/index.php/main/addUserChildrenCash/"+id, 
       contentType: 'application/json; charset=utf-8' 
      }) 
      .done(function() { 

      }) 
      .fail(function(xhr, status, error) { 
       alert(status); 
      }) 
      .always(function(data){     
      }); 
     } 
+0

dint work .. Yolunuzu denediniz – FaF

+0

Lütfen bir 'alert (id);' sonra 'var id = self.selectedchild();' doğru değere sahip olup olmadığını görmek için –

+0

Yup 2 doğru değerine sahiptir, ancak denetleyiciye göndermiyor – FaF

0

böyle senin ajax parametresini geçerdi:

$.ajax({ 
    type: 'post', 
    url: BASEURL +'/index.php/main/addUserChildrenCash', 
    data: { 'childID': self.selectedchild() }, 
    }) 
    ... 

CodeIgniter denetleyicisi olarak böyle parametreyi alacağı:

public function addUserChildrenCash() { 
    $childID = $this->input->post("childID"); 
    ... 
    } 

BASEURL’unuzun doğru değere sahip olup olmadığını da kontrol etmelisiniz. Bu yardımcı olur umarım.

+0

neden public function içinde CHildID var addUserChildrenCash() ?? ve yea işe yaramadı :( – FaF