无法为fileupload输入值调用jQuery Ajax方法

时间:2012-04-26 15:59:37

标签: jquery

我正在尝试从jQuery调用serverside方法。它在Firefox中工作正常,但在IE8和IE9中没有。

请找到以下代码示例:

 <div>  
    <asp:FileUpload ID="flAppIcon" runat="server" onchange="GetFileSize();"/>
    <asp:HiddenField ID="_hdnAppIcon" runat="server" Value="0" />
</div>

<script type="text/javascript" language="javascript">
    function GetFileSize() {
        var PageURL = '<%= ResolveUrl("~/WebForm16.aspx") %>'
        var test = ($('#<%=flAppIcon.ClientID%>').val()).toString();
        $("#<%=_hdnAppIcon.ClientID%>").val(test);
        alert($("#<%=_hdnAppIcon.ClientID%>").val());
        $.ajax({
            type: "POST",
            url: PageURL + '/GetFileSizeDetails',
            data: '{file: "' + $("#<%=_hdnAppIcon.ClientID%>")[0].value + '"}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
        });
    }

    function OnSuccess(response) {
        alert(response.d);
    }
</script> 

[System.Web.Services.WebMethod]
public static string GetFileSizeDetails(string file)
{
    return "100";
}

有谁能帮助我了解这个问题的根本原因?

谢谢&amp;问候, Santosh Kumar Patro

1 个答案:

答案 0 :(得分:0)

由于$("#<%=_hdnAppIcon.ClientID%>")[0].value的格式为C:\fakepath\your-file.jpg,因此当它通过WebMethod转到服务器端时,它将不是有效的JSON

您选择的是文件路径而不是大小。根据您的函数名称,我假设您希望将文件大小发送回服务器。

尝试使用

$("#<%=_hdnAppIcon.ClientID%>")[0].files[0].size

而不是

$("#<%=_hdnAppIcon.ClientID%>")[0].value