开发者

CodeIgniter - jQuery, JSON, simple example not working

Ok, Im a real newbie when it comes to ajax and json ... Im trying to figure it out in my codeigniter project.

Ive written something simple to start, just to bring up an alertbox, but it doesnt seem to be working, if someone could let me know where im going wrong, that would be gran开发者_如何学JAVAd.

In my view i have the following code.

$('.users').change(function(){
    $.ajax({
        type: "POST",
        url: "/edituser/returndata",
        data: {id: this.find(':selected').val()},
        dataType: json,
        success: function(data){
            alert(data);
        }
    });
});

in the edituser/returndata controller, i just simply have the following

function returndata(){
    echo $_POST['id'];
}

I know this will look pretty stupid to some people, but im still trying to figure it out, if someone could help :)

Cheers

----------------- UPDATED CODE BELOW

<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>

Controller code

function returndata()
{
    $ID = $this->input->post('id');  // Use this instead of $_POST['id']
    echo json_encode(array('id'=>$ID));
}


Your dataType should be:

dataType: 'json',

Your data should be:

data: {id: $(this).find(':selected').val()},

Inside of a event callback, this is a DOM element, so it needs to wrapped in $().

or:

data: {id: $(':selected', this).val()},

Which is the same as above, just less characters.

Also, in your PHP, you need to output JSON.

function returndata(){
  $ID = $this->input->post('id');  // Use this instead of $_POST['id']
  echo json_encode(array('id'=>$ID));
}

Then in your success function, you can do:

alert(data.id);


UPDATE Disregard the answer. I thought the JSON was sent as a string, but it's not, as pointed out by Rocket. It is converted to url encoded value pairs. I'm leaving the answer up just in case someone thought the same thing as me....


The incoming JSON is not a request parameter, you need to read the body of the request

$json = json_decode(trim(file_get_contents('php://input'));
$id = $json->id;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜