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"> </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来做到这一点。
对不起,如果发布了同样的问题,但我找不到它。我试过了我能找到的所有东西,但它不起作用。
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();
}
}
谢谢。它工作得更好! – dannymitza
它可能会造成问题,“& &”,尝试data: encodeURIComponent(key)
在ajax。
试过这个,很遗憾它没有解决这个问题。 – dannymitza
这个URL如何? controller/updatesocial /“+ encodeURIComponent(key),'? –
与此我得到400坏请求 – dannymitza
替换该行
var key = name +"&&"+ address;
TO-
var key = name +"-"+ address;
与服务器同时爆炸( - ),试试吧
尝试双方,同样的结果。 – dannymitza
为调查代码,请尝试添加静态路径,而不是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.
}
});
据我所知,问题是你“VAR键”,将其更改到:var key =“name =”+ name +“&”+“address =”+ address;
我使用CodeIgniter,它工作,如果我手动输入AJAX的预期结果,如www.domain.com/controller/updatesocial/something&&otherother_something,但问题是,AJAX是不是由于某种原因,得到这么多。 – dannymitza
调试Ajax请求被它击中右控制器和行动,铬,调试,netwok发送数据标签,点击文件名 – alamnaryab
使用AJAX调试器的Chrome,我得到XHR加载(updatesocial - 200 OK - 65.0000000023283ms - 1.429KB) – dannymitza
我已经更新我的回答 –