在javascript / jQuery中,在调用文件上传插件之前,设置了一个变量:
doc_type = "q";
然后,初始化插件。在插件选项中是:onSelect:
,在选择文件时调用。代码如下所示:
var doc_type = "q";
$(function(){
var project_num = $("#pnum").val();
var uploadObj = $("#fileuploader").uploadFile({
url: "upload_files_processor.php",
method: "POST",
onSelect: function(){
doc_type = "W";
//Or:
//doc_type = $('#hidden_input').val(); <-- What I really need to do
return true;
},
allowedTypes:"pdf,doc,docx,xls,xlsx,ppt,pptx,bmp,jpg,png,zip",
fileName: "myfile",
formData: {"project_num":project_num,"doc_type":doc_type},
multiple: true,
autoSubmit: true,
showStatusAfterSuccess:false,
onSuccess:function(files,data,xhr) {
//Refresh documents table
},
});
}); //END document.ready()
问题:
在上传处理器upload_files_processor.php
中,收到的doc_type
值为:
$doc_type = $_POST["doc_type"]; // q
如何收到值W
?
参考文献:heyageek jquery upload file plugin website - 点击 API & Options
标签
答案 0 :(得分:2)
如果你看一下api的Advanced标签。有一个名为dynamicFormData
的选项被执行,appears将在发送之前附加到formdata。
dynamicFormData: function() {
var data ={"doc_type":doc_type };
return data;
},
这就是您所需要的,因为doc_type
将在发送之前进行评估,而不是在创建时进行评估。
如果这有效。我真的没有办法测试它
答案 1 :(得分:1)
也许你可以这样做:
var formData = {
project_num: null,
doc_type: "q"
};
$(function() {
formData.project_num = $("#pnum").val();
var uploadObj = $("#fileuploader").uploadFile({
url: "upload_files_processor.php",
method: "POST",
onSelect: function(){
formData.doc_type = $('#hidden_input').val();
},
allowedTypes:"pdf,doc,docx,xls,xlsx,ppt,pptx,bmp,jpg,png,zip",
fileName: "myfile",
formData: formData,
multiple: true,
autoSubmit: true,
showStatusAfterSuccess:false,
onSuccess:function(files,data,xhr) {
//Refresh documents table
},
});
});
我不确定插件内部是如何工作的。如果它将formData
序列化为某种内部格式,则可能会遇到问题。但是,如果只是将内部formData
属性设置为指向提供的对象,那么这应该可行。对formData
的引用保持不变;你只是修改了使用对象的属性。
答案 2 :(得分:1)
在您的代码中,而不是formData: {"project_num":project_num,"doc_type":doc_type},
用这个:
dynamicFormData: function()
{
return {
project_num: $("#pnum").val(),
doc_type: $('#hidden_input').val()
};
},
然后删除行var doc_type = "q";
和var project_num = $("#pnum").val()