我有一个通过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。
答案 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方法中选择的表单元素。我假设这是打算