【问题标题】:submit button not returning value via AJAX/JQuery to self-processing form提交按钮不通过 AJAX/JQuery 将值返回到自处理表单
【发布时间】:2012-11-05 14:49:41
【问题描述】:

我有一个在 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;
  });
}

【问题讨论】:

  • serialize 不会包含提交按钮的值,因为表单不是通过提交按钮提交的。只有“成功的控件”被序列化为字符串。
  • 这令人沮丧。我正在考虑使用隐藏值来解决它,但是我会使用什么 JS 来更改隐藏按钮的值,具体取决于单击哪个按钮并提交表单?
  • 在提交按钮上放置一个点击处理程序,并让它为它提交的对象添加一个适当的属性。
  • 看起来我要把我的额外按钮更改为复选框,并让“选中”触发所需的操作,这样我可以维护一个提交,并使用隐藏值来检查 isset($ _POST['提交'])

标签: php jquery ajax forms


【解决方案1】:

尝试使用$_POST['submitButton']

【讨论】:

  • 也许我遗漏了什么,但 OP 表示 $_POST['submitButton'] 中没有数据
  • 当我意识到我最初写的是 $_POST['submit'] 而不是 $_POST['submitButton'] 时,我才进行了编辑。两个都试过了,没用。
  • 尝试 var_dump($_POST) 查看存储在 $_POST 数组中的所有值
  • 更新:使用 JS 提交表单时同样的问题 - onClick="document.forms["sub-process"].submit();"
  • var_dump($_POST) 产生:array(2) { ["name"]=> string(4) "test" ["email"]=> string(13) "test@test. com" }
【解决方案2】:

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

【讨论】:

  • 它很特别,因为这是成功控制定义中的 w3 标准。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多