Не удается получить доступ к данным из запроса jQuery Ajax, возвращает пустой массив - PullRequest
0 голосов
/ 17 февраля 2010

У меня есть форма, которая вызывается с помощью плагина fancybox пример входа в систему.

Вот код, который у меня есть:

Форма:

<form method="post" action="" id="events_form">
    <p class="clearfix"><label for="Name">Name:</label> <input type="text" name="Name" id="Name" /></p>
    <p class="clearfix"><label for="Company">Company:</label> <input type="text" name="Company" id="Company" /></p>
    <p class="clearfix"><label for="Email">Email:</label> <input type="text" name="Email" id="Email" /></p>
    <p class="clearfix"><label for="Tel">Tel:</label> <input type="text" name="Tel" id="Tel"/></p>
    <p class="clearfix"><input type="submit" value="Submit details" /></p>
 </form>

JavaScript / jQuery:

<script type="text/javascript">
    $(document).ready(function(){
        $("#event_trigger").fancybox({
            'padding'  : 0,
            'scrolling'  : 'no',
            'titleShow'  : false,
        });

        $("#events_form").bind("submit", function() {
            $.fancybox.showActivity();

            $.ajax({
                type  : "POST",
                cache : false,
                url  : "/events/index.php",
                data  : $(this).serializeArray(),
                success: function(data) {
                    $.fancybox(data);
                }
            });
            return false;
        });
    });
</script>

PHP-файл возвращает и пустой массив. Однако на вкладке Firebug отображаются данные формы.

Кроме того, я заметил, что если я делаю

print_r($_SERVER['REQUEST_METHOD'])

Возвращает GET, хотя я указал POST.

Ответы [ 3 ]

1 голос
/ 13 ноября 2010
$(this).serializeArray()

с именем CSS-идентификатора формы (в этом примере # my-form-ID), например:

$("#my-form-ID").serializeArray()

Надеюсь, что это решит. Это сработало для меня. ; -D

0 голосов
/ 17 февраля 2010

Вы выполняете запрос AJAX при отправке формы.

Если запрос AJAX не является синхронным (в любом случае, я бы не рекомендовал), существует опасность того, что ваша форма будет отправлена ​​до того, как появится вероятность возврата запроса AJAX.

В строке:

$(this).serializeArray()

$ (this) относится к элементу формы, выбранному вами в методе bind. Я предполагаю, что это предназначено

0 голосов
/ 17 февраля 2010

$.ajax ожидает, что параметр data будет объектом или строкой.

http://api.jquery.com/jQuery.ajax/ Прокрутите вниз до данных.

Если вы оберните data в объект, например, data: {array:$(this).serializeArray()} это может сработать. Я не уверен на 100% в этом.

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