CodeIgniter - jQuery, JSON, простой пример не работает - PullRequest
2 голосов
/ 24 марта 2011

Хорошо, я настоящий новичок, когда дело доходит до 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 ]

3 голосов
/ 24 марта 2011

Ваше 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 голос
/ 24 марта 2011

ОБНОВЛЕНИЕ Не обращайте внимания на ответ.Я думал, что JSON был отправлен как строка, но это не так, как указал Рокет.Он преобразуется в URL-кодированные пары значений.Я оставляю ответ на всякий случай, если кто-то подумал о том же, что и я ....


Входящий JSON не является параметром запроса, вам нужно прочитать телозапрос

$json = json_decode(trim(file_get_contents('php://input'));
$id = $json->id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...