Php 当然是个愚蠢的错误,但我能';我看不出来

Php 当然是个愚蠢的错误,但我能';我看不出来,php,html,forms,syntax,jquery-validate,Php,Html,Forms,Syntax,Jquery Validate,我有一个表格(大大简化): 提交表单时,会发生以下情况:$form->process('event_submit')process()?@David Dorward:我想这可能指向了问题。我在提交时使用JQuery.validate()。但我没有阻止标准提交操作。我的理解是,onSubmit操作完成了javascript,然后,除非被阻止,否则继续正常形式的操作。否?@Ilya Biruykov,@ax:event\u submit绝对是按钮的名称(经过多次验证,因为这也是我的第一个想法)。还验

我有一个表格(大大简化):

提交表单时,会发生以下情况:
$form->process('event_submit')设置($\u POST['event\u submit'])
的计算结果总是为FALSE。有人知道为什么吗

ETA:处理完这些建议后,JQuery.validate()似乎对表单提交产生了意外的影响。除提交按钮外,所有字段均已提交。这似乎是这个JQuery的错误:

$("form[name='event_form']").validate({
    submitHandler: function(form) {
        form.submit();
    }
}};

关于如何确保提交按钮值被发送,有什么想法吗?

在$\u POST数组上打印,看看提交了什么-它应该输出整个数组,例如

 print_r($_POST);

我将您的代码分解为一个更简单的PHP文件:

<?php
function process($submitname=false){
echo 'erg<br>';
  $success=false;
  if ($submitname && isset($_POST[$submitname])){ //PROBLEM:  isset($_POST[$submitname] is always FALSE for some reason
    echo 'bwah';
  }
}

process("event_submit");
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="event_form">
  <input type="text" name="foo"/>
  <input type="submit" name="event_submit" value="Edit"/>
</form>

将JQuery更改为:

$("form[name='event_form']").validate({
    submitHandler: function(form) {
        $("form[name='event_form'] input[name='event_submit']").click()
    }
}};

这个例子有多简单?如果您使用JavaScript和
submit()
方法提交表单,那么任何提交按钮都不会被激活,因此也不会成功,所以不会出现在表单数据中。你确定$submitname输入正确并且与提交按钮的名称对应吗?你确定
'event\u submit'
被传递到
$form->process()
?@David Dorward:我想这可能指向了问题。我在提交时使用JQuery.validate()。但我没有阻止标准提交操作。我的理解是,onSubmit操作完成了javascript,然后,除非被阻止,否则继续正常形式的操作。否?@Ilya Biruykov,@ax:
event\u submit
绝对是按钮的名称(经过多次验证,因为这也是我的第一个想法)。还验证了该方法接收到按钮名称。好的,发生了一件非常奇怪的事情。表单最初通过JQuery.validate()进行验证,然后提交。当我在不考虑标题的情况下输出$\u POST时,它关闭了JQuery(预期),并且我的submit按钮有一个值。然后,当我将
print\u r($\u POST)
移动到某个不会破坏JQuery的位置时,提交按钮仍然有一个值,即使之前我从该位置执行
print\u r($\u POST)
时,我什么也没有得到。也许是JQuery和缓存的奇怪组合导致了这个问题?@thetaiko:我同意。我有。但我没有得到我应该得到的。然后我将
print\r($\u POST)
移动到代码中的另一个位置,得到了预期的结果。然后我恢复了,仍然得到了预期的结果。@dnagirl-check
$\u POST
位于脚本的最顶端。如果存在,那么脚本中的其他内容正在更改该值。如果不是,那么这是JQuery的问题。@thetaiko:验证了JQuery是罪魁祸首。我已将JQuery问题区域添加到OP@Sam比斯比:所有这些都已经证实了。我似乎与提交之前发生的一些JQuery验证有冲突。它不影响任何其他表单字段,只影响“提交”按钮。“而且,在您有机会阅读之前,其他一些代码并没有清除$\u POST”,这也是我的一个选择。一些框架(例如Zend)在将超全局变量包装到自己的访问类中后将其清空,例如,如果使用Zend的HTTP请求对象,则不能选中
$\u POST
$\u GET
,等等编辑:忍者版。无需担心。:)
<?php
function process($submitname=false){
echo 'erg<br>';
  $success=false;
  if ($submitname && isset($_POST[$submitname])){ //PROBLEM:  isset($_POST[$submitname] is always FALSE for some reason
    echo 'bwah';
  }
}

process("event_submit");
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="event_form">
  <input type="text" name="foo"/>
  <input type="submit" name="event_submit" value="Edit"/>
</form>
$("form[name='event_form']").validate({
    submitHandler: function(form) {
        $("form[name='event_form'] input[name='event_submit']").click()
    }
}};