0

我有一个在 Colorbox 中打开并通过 Ajax/JQuery 提交给自身的表单。但是,似乎传递的数据不包括提交按钮本身的值。无论我使用多个提交还是只提交一个,$_POST['submitButton'] 中没有数据,并且它不响应 isset() 或 empty()。

不过,表格的其余部分都很好。我可以回显 $_POST['name'] 和 $_POST['email'],而不是 $_POST['submitButton']

这是我的表格(精简版):

<form id="sub-process" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input name="name" type="text" value="">
<input name="email" type="text" value="">
<input name="submitButton" type="submit" value="Submit">
</form>

这是处理要通过 AJAX 提交的表单的 jquery,而不是 HTTP 请求。

jQuery(function(){
jQuery('.cbox-form').colorbox({maxWidth: '75%', onComplete: function(){
cbox_submit();
}});
});

function cbox_submit()
{
jQuery("#sub-process").submit(function(){
jQuery.post(
  jQuery(this).attr('action'),
  jQuery(this).serialize(),
  function(data){
    jQuery().colorbox({html: data, onComplete: function(){
      cbox_submit();
    }});
  }
);
return false;
  });
}
4

3 回答 3

1

我知道这是一个老问题,但看起来人们不明白@itachi 有正确的答案。

serialize 方法永远不会从提交按钮返回值。它不会在帖子中返回提交按钮。您最好只使用隐藏的表单字段并向按钮添加点击事件。

于 2014-07-08T19:32:28.420 回答
0

Try using $_POST['submitButton']

于 2012-11-16T20:38:22.513 回答
0

jQuery 的 serialize() 函数有点古怪和特殊。我发现它在许多情况下都不是那么有用。您可能想尝试serializeObject插件。当 serialize() 对我不起作用时,我发现它在很多情况下都有效。

于 2012-11-16T21:03:11.983 回答