我,我正在使用Ajax和Codeigniter来调用函数client-server
php
public function mainViewClean() {
unset($_SESSION[$this::jsondevices]);
unset($_SESSION[$this::jsontags]);
return "Ready";
}
//route $route['cleantags'] = 'user/mainViewClean';
和ajax:
<script type="text/javascript">
$(document).ready(function(){
$("#btn_recargar").button().click(function(){
//window.location.href = "<?= base_url('home')?>";
$.ajax({
type:'POST',
url:'<?php echo base_url("cleantags"); ?>',
data:{'id':100},
success:function(data){
//window.location.href = "<?= base_url('home')?>";
alert(data);
}
});
});
});
</script>
这个功能有好处,但是javascript没有显示任何数据,我做错了什么?
答案 0 :(得分:2)
嗯,ajax调用会从服务器读取响应,并且该响应必须呈现为某种类型的可读数据,例如application/json
或text/html
。
为了编写该数据,您需要从服务器echo
使用PHP。
return
语句不会写入数据,只是在服务器级别返回。
如果您想在PHP
个功能之间进行通信,则必须使用return
。但是如果要输出一些数据,则必须使用echo
客户端
$.ajax({
url:'<?php echo base_url("cleantags"); ?>',
dataType: 'application/json',
success:function(response)
{
alert(response.foo);
}
})
服务器端
public function mainViewClean()
{
unset($_SESSION[$this::jsondevices]);
unset($_SESSION[$this::jsontags]);
echo json_encode( array("foo"=>"Ready"));
}
答案 1 :(得分:1)
将return
更改为:
echo "Ready";
如果您要发送阵列,则在服务器端需要json_encode
,例如:
// encode array into json string format
echo json_encode( array( 'name' => 'Osman' ) );
在Js中,您有2个选项,第一个解决方案是:
success : function ( data ) {
// data now is coming in this form { "name" : "osman" }
// as the string data is coming from server-side
// you must parse it back into Javascript object
var newData = JSON.parse( data );
}
第二个选项是,在ajax属性中添加dataType
属性,如下所示:
$.ajax({
...
dataType : 'json', // with this, no need to write JSON.parse()
...
});
答案 2 :(得分:0)
我很新,因为我一直在使用AJAX,但我认为你的代码有一些语法错误。
我建议你需要查看更多的ajax调用示例来修复这些小错误。
你说你的JS工作但没有显示数据?