CodeIgniter - jQuery,JSON,简单的例子不起作用

时间:2011-03-24 18:41:06

标签: ajax codeigniter

好吧,对于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));
}

2 个答案:

答案 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;