我有以下控制器
[HttpPost]
public JsonResult CreateDirectory(string product_ID , string type)
{
.......
return Json("OK");
}
[HttpPost]
public ContentResult UploadFiles(string folderid, string foldertype)
{
.........
}
并使用以下脚本我试图调用并将参数传递给CreateDirectory
控制器方法和UploadFiles
控制器方法
<script type="text/javascript">
var productid = "sample";
$('#idd').click(function () {
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")',
data: { product_ID: $('#Product_ID').val(), type: "type1" },
type: "POST",
dataType: "json",
error: function (response) {
alert(response.responseText);
},
success: function (response) {
if (response === 'OK')
{
productid = $('#Product_ID').val();
alert(productid)
}
else
alert("errro");
}
});
});
$("#idd").fileinput({
type: 'POST',
cache: false,
uploadUrl: '@Url.Action("UploadFiles", "Home")',
enctype: 'multipart/form-data',
overwriteInitial: true,
uploadExtraData: { folderid : productid , foldertype : "type1" },
});
</script>
问题:
我在上述脚本的点击JavaScript事件中为var productid
分配了新值。
喜欢这个productid = $('#Product_ID').val();
然后我尝试重用productid
重新分配fileinput
JavaScript事件中重新分配的新分配值
喜欢这个folderid : productid
但我无法看到folderid
的新指定值,当我调用UploadFiles
方法时,我看到folderid
的值为sample
答案 0 :(得分:0)
假设#idd
是文件输入,并且在单击元素时都调用.click()
和.fileinput()
,则问题是.fileinput()
不等待AJAX(介意第一个A:异步)调用click()
来返回和修改productid
。
在致电.ajax()
之前,请确保您的.fileinput()
已完成并已完成。
您可以将.fileinput()
代码移至.ajax()
的成功函数来完成此操作。
答案 1 :(得分:0)
我认为问题出在ajax调用中。当你进行到控制器的往返并回到成功时,$(&#39;#Product_ID&#39;)。val();的值。将为null或空字符串,假设它是文本框中的值,文本框的内容将被清除。
将其更改为
<script type="text/javascript">
var productid = "sample";
$('#productId').click(function () {
var myProductId = $('#Product_ID').val();
$.ajax({
url: '@Url.Action("CreateDirectory", "Home")',
data: { product_ID: $('#Product_ID').val(), type: "type1" },
type: "POST",
dataType: "json",
error: function (response) {
alert(response.responseText);
},
success: function (response) {
if (response === 'OK')
{
productid = myProductId;
alert(productid)
}
else
alert("errro");
}
});
});
$("#fileinput").fileinput({
type: 'POST',
cache: false,
uploadUrl: '@Url.Action("UploadFiles", "Home")',
enctype: 'multipart/form-data',
overwriteInitial: true,
uploadExtraData: { folderid : productid , foldertype : "type1" },
});
</script>