我正在尝试从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
答案 0 :(得分:0)
由于$("#<%=_hdnAppIcon.ClientID%>")[0].value
的格式为C:\fakepath\your-file.jpg
,因此当它通过WebMethod转到服务器端时,它将不是有效的JSON
您选择的是文件路径而不是大小。根据您的函数名称,我假设您希望将文件大小发送回服务器。
尝试使用
$("#<%=_hdnAppIcon.ClientID%>")[0].files[0].size
而不是
$("#<%=_hdnAppIcon.ClientID%>")[0].value