form.submit()不包括发送提交按钮

3
我有一个 jQuery 代码,它首先使用 ajax 验证表单,然后将相同的表单重新提交到另一个位置,但在重新提交时,提交按钮的值没有被发送。 问题是什么?以下是 JavaScript 代码:
$.ajax({
    'type': 'post',
    'url': '/inc/do.php',
    'data': $form.serialize(),
    beforeSend: function(){
        $form.find(':input').attr('disabled', true);
        $form.find('.btn').addClass('bdsbld');
        $form.find('.blkr').css('display', 'block');
    },
    error: function(){
        Recaptcha.reload();
        $form.find(':input').attr('disabled', false);
        $form.find('.btn').removeClass('bdsbld');
        $form.find('.blkr').css('display', 'none');
    },
    success: function(d){
        $form.find(':input').removeAttr('disabled');
        if(res=isJSON(d)){
            if(!res.err && res.msg.toLowerCase()==='ok'){
                if(($PRI_KEY=$form.find('input#PRIVATE_KEY')).length) $PRI_KEY.val(res.PRIVATE_KEY);
                $form.append('<input type="hidden" id="PRIVATE_KEY" name="PRIVATE_KEY" value="'+res.PRIVATE_KEY+'" />');
                $form.find('input#do').val('BOOK_AD');
                $form.find('#reCaptchaO').remove();
                form.submit();
            }
            else{
                alert(res.msg);
                Recaptcha.reload();
                $form.find('.btn').removeClass('bdsbld');
                $('#'+res.fld).delay(250).focus();
            }
        }
        else
        if(d!==''){
            alert(d);
            Recaptcha.reload();
            $form.find('.btn').addClass('bdsbld');
        }
        $form.find('.blkr').css('display', 'none');
    }
});

在这段代码中,即那一行。
form.submit();

重新提交表单,但没有包含提交按钮及其值,但是提交按钮已经包含在ajax请求中了...为什么?

有没有任何解决方法? 我希望表单可以重新提交,包括所有字段和按钮。 - Vaibhav Gupta
似乎完全没有必要要求您在提交按钮中包含静态值字段。请参考我的答案,了解可能的替代方案。 - jondavidjohn
嗯...看来你是正确的,需要添加动态值... 谢谢。 - Vaibhav Gupta
3个回答

7

如果仅在提交表单时使用提交按钮,那么提交按钮才被视为成功的控件。由于您是使用JavaScript提交表单,因此没有使用提交按钮,所以它不是成功的,并且不包含在提交请求中。


3
这是因为传统上只有在点击提交按钮时,提交按钮才会被包含在表单提交中。
由于您不是通过传统的按钮提交表单,因此没有包含任何值。
如果您在服务器端检查此值,则它是一个静态值,可以很容易地通过静态隐藏输入完成,似乎没有理由伪造点击的提交按钮来检索静态值。
<input type="hidden" value="info" name="field_name" id="field_name" />

1

在form.submit()之前,您可以使用此方法。使用click函数调用提交按钮。因此,它通常调用提交按钮。

document.form name.submit button name.click();


这个也可以:'document.getElementById('submitButton').click();' - Koray Tugay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接