我在jQuery中有一个代码,首先使用ajax验证表单,然后将相同的表单重新提交到另一个位置,但在重新提交提交按钮值时不发送.. 会有什么问题?
这是js代码:
$.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请求中......为什么?
答案 0 :(得分:7)
如果用于提交表单,则提交按钮仅被视为successful控件。由于您使用JavaScript提交表单,因此您没有使用提交按钮,因此它不成功,并且未包含在提交的请求中。
答案 1 :(得分:3)
这是因为提交按钮仅在单击所述提交按钮时传统上包含在表单提交中。
由于您没有通过传统的input="submit"
按钮提交表单,因此不会包含任何值。
如果你在服务器端检查这个值,它是一个静态值,可以通过静态隐藏输入轻松完成,似乎不是假冒 a的理由单击“提交”按钮以检索静态值。
<input type="hidden" value="info" name="field_name" id="field_name" />
答案 2 :(得分:1)
您可以使用此方法 在form.submit()之前。使用单击功能调用提交按钮。所以,传统上它会调用提交按钮。
document.form name.submit button name.click();