AJAX不传递数据给CodeIgniter控制器

问题描述:

问候*!我试图使用AJAX将数据传递给控制器​​,但由于某些原因,它没有。AJAX不传递数据给CodeIgniter控制器

控制器:

public function updateSocial($key){ 
     if($key != null){ 
      list($name, $address) = explode("&&", $key); 
      $this->db->query("UPDATE social SET address = '" . $address . "' WHERE name = '" . $name . "'"); 
      echo "Affected rows: " . $this->db->affected_rows(); 
     } 
    } 

阿贾克斯:

function updateSocial(name){ 
       var address = $("#" + name).val(); 
       var key = name +"&&"+ address; 
       //alert(key); 
       $.ajax({ 
        type: "GET", 
        url: "<?php echo base_url(); ?>controller/updatesocial", 
        data: key, 
        dataType: "text", 
        cache:false, 
        success: 
         function(data){ 
          alert(data); //as a debugging message. 
         } 

       }); 
      } 

和HTML:

   <div class="row"> 
        <div class="col-lg-10 col-md-10 col-sm-12 col-xs-12"> 
         <label for="{name}">{name}</label> 
         <input id="{name}" class="form-control" name="{name}"value="{address}"/> 
        </div> 
        <div class="col-lg-2 col-md-2 col-sm-12 col-xs-12"> 
         <div class="clearfix">&nbsp;</div> 
         <input type="submit" class="btn btn-material-green pull-right" onclick="updateSocial('{name}')"/> 
        </div> 
       </div> 

我搜索了此解决方案在计算器上,尝试了一切,没能解决它。

如果我手动在网址如下输入值:

www.domain.com/controller/updatesocial/something&&another_something 

它的工作原理,所以这个问题是不是PHP端。

我在做什么:我有多个输入字段,需要单独修改,我想用AJAX来做到这一点。

对不起,如果发布了同样的问题,但我找不到它。我试过了我能找到的所有东西,但它不起作用。

+0

调试Ajax请求被它击中右控制器和行动,铬,调试,netwok发送数据标签,点击文件名 – alamnaryab

+0

使用AJAX调试器的Chrome,我得到XHR加载(updatesocial - 200 OK - 65.0000000023283ms - 1.429KB) – dannymitza

+0

我已经更新我的回答 –

function updateSocial(name){ 
      var address = $("#" + name).val(); 
      var key = name +"&&"+ address; 
      //alert(key); 
      $.ajax({ 
       type: "GET", 
       url: "<?php echo base_url(); ?>controller/updatesocial/"+key, 
       dataType: "text", 
       cache:false, 
       success: 
        function(data){ 
         alert(data); //as a debugging message. 
        } 

      }); 
     } 

您使用GET方法,所以你必须通过附加URL发送它和你的控制器将

public function updateSocial(){ 
    $key = $this->uri_segment(3); 
    if($key != null){ 
     list($name, $address) = explode("&&", $key); 
     $this->db->query("UPDATE social SET address = '" . $address . "' WHERE name = '" . $name . "'"); 
     echo "Affected rows: " . $this->db->affected_rows(); 
    } 
} 
+0

谢谢。它工作得更好! – dannymitza

它可能会造成问题,“& &”,尝试data: encodeURIComponent(key)在ajax。

+0

试过这个,很遗憾它没有解决这个问题。 – dannymitza

+0

这个URL如何? controller/updatesocial /“+ encodeURIComponent(key),'? –

+0

与此我得到400坏请求 – dannymitza

替换该行

var key = name +"&&"+ address; 

TO-

var key = name +"-"+ address; 

与服务器同时爆炸( - ),试试吧

+0

尝试双方,同样的结果。 – dannymitza

+0

为调查代码,请尝试添加静态路径,而不是base_url() –

试试这个..

您可以发送数据通过ajax中的数据选项和定义的类型来访问服务器。默认类型为GET方法

使用“数据:{名称:姓名,地址:地址},”

$.ajax({ 
        type: "GET", 
        url: "<?php echo base_url(); ?>controller/updatesocial", 
        data: {name:name,address:address}, 
        dataType: "text", 
        cache:false, 
        success: 
         function(data){ 
          alert(data); //as a debugging message. 
         } 

       }); 
+0

我已更新我的答案检查它并让我知道 –

+0

这解决了问题!非常感谢! – dannymitza

+0

欢迎........ –

据我所知,问题是你“VAR键”,将其更改到:var key =“name =”+ name +“&”+“address =”+ address;

+0

我使用CodeIgniter,它工作,如果我手动输入AJAX的预期结果,如www.domain.com/controller/updatesocial/something&&otherother_something,但问题是,AJAX是不是由于某种原因,得到这么多。 – dannymitza