2010-02-17 160 views
0

我有一个通过fancybox plugin登录示例调用的窗体。无法从jQuery Ajax请求访问数据,返回空数组

这里是我的代码:

形式:

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

+0

您可以尝试使用$ .post()函数 – 2010-02-17 11:58:41

+0

我试过使用$ .post(),问题依然不幸 – Oldie 2010-02-17 12:02:59

+0

为什么不使用[jQuery表单插件](http://www.malsup。 COM/jQuery的/表格)?它会让你的工作更轻松。 – 2010-02-17 13:10:00

回答

0

$.ajax预计参数data是一个对象或字符串。

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

如果您将data包装在一个对象中,例如data: {array:$(this).serializeArray()}它可能工作。尽管如此,我并不十分确定。

+0

嗨,谢谢你的回答,不幸的是包装数据没有工作。 – Oldie 2010-02-17 12:18:30

+0

如果您将textStatus添加到您的成功功能中,您会得到什么'function(data,textStatus){alert(textStatus);}'? – Nalum 2010-02-17 12:32:26

+0

多数民众赞成在返回“成功”,但仍是一个空阵列。 – Oldie 2010-02-17 12:40:18

0

您正在对表单提交进行AJAX请求。

除非AJAX请求是同步的(我不推荐这么做),否则在AJAX请求返回之前有可能会提交表单。

在行:

$(this).serializeArray() 

$(本)指的是已在绑定方法所选择的形式的元素。我假设这是为了

+0

嗨,是的,这是打算。我从http://fancybox.net/blog上的示例中获得了此代码,并且该示例正常工作。 – Oldie 2010-02-17 12:15:30

1
$(this).serializeArray() 

与形式CSS ID(#我的外形ID,在这个例子中)这样的名字:

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

希望能解决它。它为我工作。 ; -D