0

我正在尝试从 jQuery 调用服务器端方法。它在 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";
}

谁能帮我知道这个问题的根本原因?

谢谢和问候, 桑托什库马尔帕特罗

4

1 回答 1

0

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

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

尝试使用

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

代替

$("#<%=_hdnAppIcon.ClientID%>")[0].value
于 2012-04-26T16:23:36.287 回答