我想从控制器方法的下拉列表中获取所选选项的文本。 但是使用下面的代码,我只得到初始文本而不是更改的文本。
在data.submit之前的data.jsonOfLog获取更改的文本,但不是这个文本传递给控制器。
在控制器中:
[HttpPost]
public JsonResult GoodSave(string jsonOfLog)
{
在视图中:
<script type="text/javascript">
$(function () {
json = { jsonOfLog: $("#ddlDocumentType option:selected").text() };
$('#fileupload').fileupload({
dataType: 'json',
contentType: 'application/json; charset=utf-8',
url: '/Home/GoodSave',
data: JSON.stringify(json),
add: function (e, data) {
$('#fileuploadbutton').click(function () {
data.jsonOfLog = $("#ddlDocumentType option:selected").text();
data.submit();
})
}
});
});
</script>
答案 0 :(得分:2)
当您尝试上传时,这会更改formData
<script type="text/javascript">
$(function () {
$('#fileupload').fileupload({
contentType: 'application/json; charset=utf-8',
url: '/Home/GoodSave'
})
.on("fileuploadsubmit", function (e, data) {
data.formData = {
jsonOfLog: $("#ddlDocumentType option:selected").text()
};
});
$("#fileuploadbutton").on("click", function() {
$("#fileupload").submit();
});
});
</script>
我认为您不需要对数据进行字符串化,因此请尝试以上操作,如果这不起作用,请像以前一样使用stringify。当您使用与服务器方法中的参数匹配的属性名称传递数据时,不应该使用它。
这来自blueimp文件上传文档...
https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data
答案 1 :(得分:0)
最后,有效的是:
<script type="text/javascript">
$(function () {
$('#fileupload').fileupload({
add: function (e, data) {
$('#fileuploadbutton').click(function () {
$.ajax({
type: 'POST',
cache: true,
url: '/Home/GoodSave',
data: { jsonOfLog: $("#ddlDocumentType option:selected").text() },
success: function (data) {
},
error: function (data) {
alert("error");
}
});
});
}
});
});
</script>