好吧,对于ajax和json来说,我是一个真正的新手......我试图在我的codeigniter项目中找到它。
我写了一些简单的东西,只是为了启动一个警告框,但它似乎没有工作,如果有人可以让我知道我哪里出错,那将是伟大的。
在我看来,我有以下代码。
$('.users').change(function(){
$.ajax({
type: "POST",
url: "/edituser/returndata",
data: {id: this.find(':selected').val()},
dataType: json,
success: function(data){
alert(data);
}
});
});
在edituser / returndata控制器中,我只是简单地使用以下内容
function returndata(){
echo $_POST['id'];
}
我知道这对某些人来说看起来很愚蠢,但是如果有人可以提供帮助的话我还是想弄明白:)
干杯
-----------------更新后的代码
<script type="text/javascript" charset="utf-8">
$('#users').live('change', function(){
$.ajax({
type: "POST",
url: "/edituser/returndata",
data: {id: $(':selected', this).val()},
dataType: 'json',
success: function(data){
alert(data.id);
}
});
});
</script>
控制器代码
function returndata()
{
$ID = $this->input->post('id'); // Use this instead of $_POST['id']
echo json_encode(array('id'=>$ID));
}
答案 0 :(得分:3)
您的dataType
应该是:
dataType: 'json',
您的data
应该是:
data: {id: $(this).find(':selected').val()},
在事件回调中,this
是一个DOM元素,因此它需要包含在$()
中。
或:
data: {id: $(':selected', this).val()},
与上述相同,只是更少的字符。
此外,在PHP中,您需要输出JSON。
function returndata(){
$ID = $this->input->post('id'); // Use this instead of $_POST['id']
echo json_encode(array('id'=>$ID));
}
然后在success
函数中,您可以执行以下操作:
alert(data.id);
答案 1 :(得分:1)
<强>更新强> 无视答案。我认为JSON是作为一个字符串发送的,但它不是,正如Rocket指出的那样。它被转换为url编码值对。我要留下答案,万一有人认为和我一样......
传入的JSON不是请求参数,您需要读取请求的正文
击>
$json = json_decode(trim(file_get_contents('php://input'));
$id = $json->id;