.submit()不包含隐藏字段

.submit () isn't including hidden fields

本文关键字:隐藏 字段 包含 submit      更新时间:2023-09-26

将jQuery .submit() post绑定到dropzone file upload complete handler会导致所有正确的数据被发送,除了它丢失了隐藏的输入字段。代码均为phpjquery/js

找不到任何关于为什么这些会被排除。

所有隐藏字段都在表单中,并且有名称和id填充

<pre>
<code>
<form id="payments" method="post" action="<?php $_SERVER['PHP_SELF'] ?>" class="form-horizontal" >
<input type="hidden" name="transID" value="<? if(isset($values['transID'])){echo $values['transID'];}else{ echo $transID; } ?>" />
<input type="hidden" name="transID" value="<? if(isset($values['transID'])){echo $values['transID'];}else{ echo $transID; } ?>" />
<input type="hidden" id="pdflink" name="pdflink" value="<? if(isset($values['pdflink'])){echo $values['pdflink'];} ?>" />
<input type="button" name="btnSubmit" value="Submit PDF & Payment(s)" onclick="this.disabled" id="btnSubmit" class="col-md-6 btn btn-primary raised" />
</form>
<script>
$('#upload').fileupload({
// This element will accept file drag/drop uploading
autoUpload: true,
dropZone: $('#drop'),
limitMultiFileUploads:1,
maxNumberOfFiles: 1,
fileInput: $('#upl'),
url: 'acctfilesupload',
dataType: 'text',
// This function is called when a file is added to the queue;
// either via the browse button, or via drag/drop:
add: function (e, data) {
var tpl = $('<li class="working"><p></p></li>');
// Append the file name and file size
tpl.find('p').text("Submitted File: " + data.files[0].name).append('  <i>' + formatFileSize(data.files[0].size) + '</i>');
// Add the HTML to the UL element
data.context = $(ul).html(tpl);

// upload the file once it is added to the queue
$('#btnSubmit').click(function(){
var jqXHR = data.submit();})
},
progressall: function (e, data) {
var progress = parseInt(((data.loaded / data.total * 85)+ 15), 10);
$('#uploadprogress').css('width', progress + '%').html("&nbsp;&nbsp;Uploaded: " + progress + '%');
    },
done: function(e, data){
var r = data.result;
if (r.lastIndexOf("''''FShost''Accounts", 0) === 0) {
$('#pdflink').val(r);
$('#payments').submit();
} else {
alert(r);
$('#btnSubmit').prop('disabled',false);
$('#uploadprogress').css('width','15%').html("&nbsp;&nbsp;Uploaded: 0%");
}
}
}).bind('fileuploadsubmit', function (e, data) {
data.formData = {
name: $('#uploadname').val(),
memberid: $('#memberidupload').val(),
transid: $('#acctfilesubID').val(),
amount: $('#AmountOwed').val()
};
});
</script>
</code>
</pre>

找到了!问题是PHP在一个表单中可以提交的最大字段数的硬限制。最后一个提交的字段恰好也是隐藏字段出现在POST

之前的最后一个字段