2013-03-06 102 views
0

我的Codeigniter视图,我有以下代码通过jquery ajax函数发送当前和新密码给控制器,但它好像数据没有传递给控制器​​。 看看你能否帮助我。Jquery ajax无法发布数据

var url = '<?php echo base_url();?>index.php/it_inventory/change_my_pass'; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     //datatype: "json", 
     data:'cu_pass=' + cu_pass + '&new_pass=' + new_pass, 
     success: function(r){ 
      if(r==1){ 
       alert("Password Changed Successfully!"); 
      }else{ 
       alert("Error changing password!"); 
      } 
     } 
    }); 

控制器:

public function change_my_pass($cu_pass="", $new_pass=""){ 
    //$cu_pass = $this->input->post('cu_pass'); 
    //$new_pass = $this->input->post('new_pass'); 
    echo $this->it_inventory_model->change_my_pass($cu_pass, $new_pass); 
} 
+0

但你在哪里甚至p在你的文章中分配数据? – 2013-03-06 06:04:50

回答

0

试试这个传球后作为JSON数据

var url = '<?php echo base_url();?>index.php/it_inventory/change_my_pass/'; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     datatype: "json", 
     data:{cu_pass: cu_pass,new_pass: new_pass}, 
     success: function(r){ 
      if(r==1){ 
       alert("Password Changed Successfully!"); 
      }else{ 
       alert("Error changing password!"); 
      } 
     } 
    }); 

控制器

public function change_my_pass($cu_pass="", $new_pass=""){ 
    $cu_pass = $this->input->post('cu_pass'); 
    $new_pass = $this->input->post('new_pass'); 
    echo $this->it_inventory_model->change_my_pass($cu_pass, $new_pass); 
} 
+0

但是,URL的值的末尾的斜线是不需要的! – goseo 2013-03-06 07:24:17

0

你可以使用序列化()方法来获取表单数据,并将其传递到AJAX数据PARAMS。

0
在$就

({URL仅传递页面 &的URL删除变量,你想用URL 添加数据传递 数据:{new_pass:new_pass_valu,cu_pass:cu_pass_value},

0

请个CSRF的配置文件,如果它是开放的,则带上'csrf_token_name'参数。

的config/config.php文件

/* 
|-------------------------------------------------------------------------- 
| Cross Site Request Forgery 
|-------------------------------------------------------------------------- 
| Enables a CSRF cookie token to be set. When set to TRUE, token will be 
| checked on a submitted form. If you are accepting user data, it is strongly 
| recommended CSRF protection be enabled. 
| 
| 'csrf_token_name' = The token name 
| 'csrf_cookie_name' = The cookie name 
| 'csrf_expire' = The number in seconds the token should expire. 
*/ 
$config['csrf_protection'] = TRUE; 
$config['csrf_token_name'] = 'csrf_test_name'; 
$config['csrf_cookie_name'] = 'csrf_cookie_name'; 
$config['csrf_expire'] = 7200; 

正确的AJAX POST请求:

var url = '<?php echo base_url();?>index.php/it_inventory/change_my_pass/'; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     //datatype: "json", 
     data:'cu_pass=' + cu_pass + '&new_pass=' + new_pass + '&<?php echo config_item('csrf_token_name');?>=<?php echo $this->input->cookie(config_item('csrf_cookie_name'))?>', 
     success: function(r){ 
      if(r==1){ 
       alert("Password Changed Successfully!"); 
      }else{ 
       alert("Error changing password!"); 
      } 
     } 
    }); 

控制器:

public function change_my_pass(){ 
    $cu_pass = $this->input->post('cu_pass'); 
    $new_pass = $this->input->post('new_pass'); 
    echo $this->it_inventory_model->change_my_pass($cu_pass, $new_pass); 
}