JavaScript

时间:2015-11-26 08:47:31

标签: 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)
{
  .........
}

并使用以下脚本我试图调用并将参数传递给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

2 个答案:

答案 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>