无法从jQuery Ajax请求访问数据,返回空数组

时间:2010-02-17 11:56:01

标签: php ajax forms jquery

我有一个通过fancybox plugin登录示例调用的表单。

这是我的代码:

形式:

<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'])

即使我指定了POST,也会返回GET。

3 个答案:

答案 0 :(得分:1)

$(this).serializeArray()

使用表单CSS id的名称(在此示例中为#my-form-ID),如下所示:

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

希望能解决它。它对我有用。 ;-D

答案 1 :(得分:0)

$.ajax期望参数data是对象或字符串。

http://api.jquery.com/jQuery.ajax/向下滚动到数据。

如果您将data包裹在一个对象中,例如data: {array:$(this).serializeArray()}它可能有用。我不是百分百肯定的。

答案 2 :(得分:0)

您正在表单提交上执行AJAX请求。

除非AJAX请求是同步的(无论如何我都不建议),否则在AJAX请求有可能返回之前,您的表单可能会被提交。

在行中:

$(this).serializeArray()

$(this)指的是您在bind方法中选择的表单元素。我假设这是打算