在JavaScript中重用变量的值
我有以下控制器在JavaScript中重用变量的值,javascript,asp.net-mvc,twitter-bootstrap,asp.net-mvc-3,file-io,Javascript,Asp.net Mvc,Twitter Bootstrap,Asp.net Mvc 3,File Io,我有以下控制器 [HttpPost] public JsonResult CreateDirectory(string product_ID , string type) { ....... return Json("OK"); } [HttpPost] public ContentResult UploadFiles(string folderid, string foldertype) { ......... } 使用下面的脚本,我试图调用并将参数传递给CreateDir
[HttpPost]
public JsonResult CreateDirectory(string product_ID , string type)
{
.......
return Json("OK");
}
[HttpPost]
public ContentResult UploadFiles(string folderid, string foldertype)
{
.........
}
使用下面的脚本,我试图调用并将参数传递给CreateDirectory
controller方法和UploadFiles
controller方法
<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>
var productid=“样本”;
$('#idd')。单击(函数(){
$.ajax({
url:'@url.Action(“CreateDirectory”,“Home”),
数据:{product_ID:$('#product_ID').val(),键入:“type1”},
类型:“POST”,
数据类型:“json”,
错误:函数(响应){
警报(response.responseText);
},
成功:功能(响应){
如果(响应=='OK')
{
productid=$('#Product_ID').val();
警报(产品ID)
}
其他的
警报(“errro”);
}
});
});
$(“#idd”).fileinput({
键入:“POST”,
cache:false,
uploadUrl:'@Url.Action(“UploadFiles”,“Home”),
enctype:“多部分/表单数据”,
覆盖初始值:对,
uploadExtraData:{folderid:productid,foldertype:“type1”},
});
问题:
我正在为上述脚本的click JavaScript事件中的var productid
分配新值
像这样productid=$('#Product_ID').val()代码>
然后我尝试在fileinput
JavaScript事件中重用新分配给productid
的值
像这样folderid:productid
但是我看不到新分配的folderid
的值,当调用UploadFiles
方法时,我可以看到folderid
的值是sample
,假设\idd
是文件输入,当单击元素时,.click()
和.fileinput()
都被调用,您的问题是.fileinput()
没有等待AJAX(注意第一个A:Asynchronous)调用click()
返回并修改productid
在调用.fileinput()
之前,确保调用并完成了.ajax()
您可以将.fileinput()
代码移动到.ajax()
的success函数来完成此操作。我相信问题在于ajax调用。当您往返到控制器并返回到成功时,$('#Product_ID').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>
var productid=“样本”;
$('#productId')。单击(函数(){
var myProductId=$('#Product_ID').val();
$.ajax({
url:'@url.Action(“CreateDirectory”,“Home”),
数据:{product_ID:$('#product_ID').val(),键入:“type1”},
类型:“POST”,
数据类型:“json”,
错误:函数(响应){
警报(response.responseText);
},
成功:功能(响应){
如果(响应=='OK')
{
productid=myProductId;
警报(产品ID)
}
其他的
警报(“errro”);
}
});
});
$(“#fileinput”).fileinput({
键入:“POST”,
cache:false,
uploadUrl:'@Url.Action(“UploadFiles”,“Home”),
enctype:“多部分/表单数据”,
覆盖初始值:对,
uploadExtraData:{folderid:productid,foldertype:“type1”},
});
研究术语闭包w.r.tjavascript@JaromandaX我不明白你的意思是啊!您是对的,我想在click()
事件及其修改值之后调用.fileinput()
。但正如您所说,我曾将此.fileinput()
放入单击()的成功事件中,该插件将消失:(不,一旦我使用了你的方法,在上传文件
方法中,我得到的folderid
值为示例
,我不理解你的评论。该方法是否有效。再次查看你的代码,我注意到你有相同的选择器$(“#idd”)对于click和fileinput,它们应该是不同的操作它不起作用,实际上我用的是创建目录的功能,fileinput
我用的是上传文件的功能请看你的ID。它们是一样的。我认为它们不应该是一样的