2014-03-13 101 views
0

我有簡單的asp.net異步上傳,我試圖從本地系統上傳示例圖片,並嘗試執行簡單的webmethod上傳。隱藏字段值顯示爲undefined

Scenanrio:使用

  1. 上傳圖片上傳異步和它做工精細,並上傳至目的文件夾中。

  2. 現在試圖保存在隱藏字段fileupload.filename和測試,如果真的得到文件名時(這也適用)

  3. 現在嘗試發送,其中隱藏字段的值保存在VAR時出現問題。 這裏它顯示我爲undefined。

這裏是我的代碼:

Protected Sub fileUploadComplete(ByVal sender As Object, ByVal e As AsyncFileUploadEventArgs) 
    Thread.Sleep(1000) 
    Dim filename As String = System.IO.Path.GetFileName(fileUpload1.FileName) 
    fileUpload1.SaveAs(Server.MapPath("UploadFiles/") & RandomFolder.Value & "/" & filename) 
    lblFilename.Value = filename 
End Sub 

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     CreateFolder() 
    End If 
    Dim mypath As String = Server.MapPath("~/UploadFiles/") 
    myFilePath.Value = mypath 

End Sub 
<WebMethod()> _ 

公共功能FileDetails(BYVAL文件名作爲字符串,BYVAL mypath中作爲字符串)作爲字符串 //一些操作 返回 「True」 端功能

HTML:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
      <link href="style/bootstrap.css" rel="stylesheet" /> 
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
<script type="text/javascript"> 
    // This function will execute after file uploaded successfully 
    function uploadComplete() { 
     document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File Uploaded Successfully"; 
} 
// This function will execute if file upload fails 
function uploadError() { 
    document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File upload Failed."; 
} 

$(document).ready(function() { 
    $("#btnconvert").click(function() { 
     var FileFolder = $('#RandomFolder').val(); 
     var filename = document.getElementById('<%=lblFilename.ClientID %>').val(); 
     alert(FileFolder); 
     alert(filename); 
     $.ajax({ 
      type: "POST", 
      url: "AsyncUpload.aspx/FileDetails", 
      data: JSON.stringify('{"Filename":"' + filename + '","mypath":"' + FileFolder + '"}'), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       // Replace the div's content with the page method's return. 
       alert("Success"); 
      } 
     }); 
    }); 
}); 
</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:ToolkitScriptManager ID="scriptManager1" runat="server"/> 
<div> 
<asp:AsyncFileUpload ID="fileUpload1" OnClientUploadComplete="uploadComplete" OnClientUploadError="uploadError" 
CompleteBackColor="White" Width="350px" runat="server" UploaderStyle="Modern" UploadingBackColor="#CCFFFF" 
ThrobberID="imgLoad" OnUploadedComplete="fileUploadComplete" /><br /> 
<asp:Image ID="imgLoad" runat="server" ImageUrl="loading.gif" /> 
<br /> 
<asp:Label ID="lblMsg" runat="server" Text=""></asp:Label> 
</div> 
    <asp:HiddenField ID="RandomFolder" runat="server"/> 
    <asp:HiddenField ID="FilePath" runat="server"/> 
    <asp:HiddenField ID="myFilePath" runat="server"/> 
    <asp:HiddenField ID="lblFilename" runat="server"/> 
    <button id="btndetails" class="btn btn-danger btnconvert" type="button">Convert file</button> 
    </div> 

回答

0

您使用val()方法調用隱藏字段的值,但該字段對象上不存在該方法;這是一個jQuery方法。無論是包裝你的隱藏字段中的jQuery:

var filename = $('#<%=lblFilename.ClientID %>').val(); 

或者只需撥打領域的.Value屬性:

var filename = document.getElementById('<%=lblFilename.ClientID %>').value; 
+0

它仍然給我相同的空值 – coder

0

看到這個page它可以幫助你實現你試圖