JSON-объект, передаваемый с использованием JQUERY AJAX, не доступен - PullRequest
0 голосов
/ 24 марта 2011

Я отправляю строку json, используя JQuery.ajax, на страницу php, где я пытаюсь получить массив и перебирать переменные. По какой-то причине я вижу POST в firebug при запуске скрипта, но когда я пытаюсь получить параметры, все, что я получаю, это пустой Array (). Я пытался понять это часами, и я нахожусь в конце. Я перешел с asp.net на .php, так что я все еще немного свеж с моим синтаксисом, но, похоже, это должно быть довольно просто.

Вот мой код для отправки jquery.

$('#form_add').submit(function() {
    var serial_data = $(this).serialize();
    $(".page_content").fadeOut("slow", function(){
        $.get(uri_base +'/'+uri_cont+'/get_db_name/true/'+Math.random(), function(data) { 
            $.ajax({
                type: 'POST',
                url: uri_base +'/AJAX/add_record/'+data+'/'+Math.random(),
                data: serial_data,
                contentType: "application/json",
                success: function(data){
                    $.ajax({
                        type: 'POST',
                        url: uri_base +"/"+ uri_cont +"/"+ uri_func,
                        data: data,
                        success: function(data){
                            alert(data)


                        },
                        error: function(xhr, ajaxOptions, thrownError){
                             alert(xhr.status);
                             alert(thrownError);
                        }

                    });  

                },
                error: function(xhr, ajaxOptions, thrownError){
                     alert(xhr.status);
                     alert(thrownError);
                }

            });

        });                       
    });
    return false;
});

Игнорировать первый .get (), который просто возвращает переменную для завершения следующего URL. Вызов first.ajax () отправляет сериализованные данные формы на мой контроллер AJAX и помещает их в базу данных. При возврате из контроллера возвращается массив объектов, который я преобразовал в json.

if(isset($key)){    
    $data['add_msg'] = $this->model_ajax->add_record($table,$array);
    $exploded_data = json_encode($data['add_msg']);
    print_r($exploded_data);
    exit;
}

Оттуда следующий .ajax () должен отправить данные моему контроллеру, чтобы получить представление, отображаемое в div .pag_content. Я попытался повторить объект json, a для каждого цикла, чтобы вытащить ключи, и множество других вещей. ничего ... Я получаю либо ошибку JSON Invalid (при попытке ее декодирования), либо просто вывод "Array ()", либо вообще ничего при циклическом просмотре.

Это код контроллера и вывод POST, которые я вижу в firebug ...

echo $_POST;

$array = $_POST;
echo $array;

foreach($_POST as $key){
    echo $key;
}
exit;

[{"id":"29","datetime":"2011-03-23 12:10:25","full_name":"Leroy Brown","email_address":"test@testing.com","password":"asdf","id_group":"0","id_sites":"0","active":"0"}]

1 Ответ

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

перед тем как вывести что-нибудь в php, убедитесь, что вы отправили правильный тип контента. Фреймворки, такие как JQuery и mootools, имеют тенденцию фильтровать (как они должны) с набором символов Accept (вы можете видеть это в firebug)

header («Content-Type: application / json»); // также может быть text / json, проверьте заголовки accept в firebug в зависимости от вашей среды

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...