Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中重用变量的值_Javascript_Asp.net Mvc_Twitter Bootstrap_Asp.net Mvc 3_File Io - Fatal编程技术网

在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。它们是一样的。我认为它们不应该是一样的