在我的一个页面上调用__doPostBack时出现了错误,我在项目中的每个页面都使用__doPostBack函数,但是在这个特定的页面中,我遇到了这个Javascript错误。
我在互联网上搜索,唯一的结果是说当我有一个未关闭的标签时会发生这个错误,但是我检查了整个网站,没有问题。
错误:__doPostBack未定义 源文件:htt://localhost:99/ProjectName/Disable.aspx 行:1
在我的一个页面上调用__doPostBack时出现了错误,我在项目中的每个页面都使用__doPostBack函数,但是在这个特定的页面中,我遇到了这个Javascript错误。
我在互联网上搜索,唯一的结果是说当我有一个未关闭的标签时会发生这个错误,但是我检查了整个网站,没有问题。
错误:__doPostBack未定义 源文件:htt://localhost:99/ProjectName/Disable.aspx 行:1
运行时/客户端错误 __doPostBack
未定义困扰了我几个小时。网络上有很多误导/不正确的帮助。我在 default.aspx.cs
文件的 Page_Load
事件中插入了以下代码行,一切都在我的系统和在使用 GoDaddy 的生产环境中正常工作。
ClientScript.GetPostBackEventReference(this, string.Empty);
this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty);
该函数返回调用 __doPostBack() 的字符串,同时强制页面输出 __doPostBack() 函数定义。
只需将此代码添加到您的.aspx文件中即可
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script src="/Scripts/appLogic/Regions.js" />
我更正了脚本标签:
<script src="/Scripts/appLogic/Regions.js" type="text/javascript" ></script>
并且恢复了理智。
</script>
标签。一旦我加上它,我的问题就解决了!谢谢。 - Jesse Webb__doPostBack()
应该自动包含在任何可能引起回发(post back)的ASP.NET WebControl中。您听起来像是在一些您编写的JavaScript代码中手动调用它。如果是这样的话,您需要包含一个WebControl来确保该函数被插入到页面中。
ClientScript.GetPostBackEventReference(this, "");
if ($('#__EVENTTARGET').length <= 0 && $('#__EVENTARGUMENT').length <= 0) {
$('#YOUR_ASPNET_FORMID').prepend('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />');
}
if (typeof __doPostBack == 'undefined') {
__doPostBack = function (eventTarget, eventArgument) { object
var theForm = document.forms['YOUR_ASPNET_FORMID'];
if (!theForm) {
theForm = document.YOUR_ASPNET_FORMID;
}
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
};
}
我知道安装4.5版本可以解决这个问题,我强烈推荐这样做。然而,如果你和我一样在一个使用.net 4的企业公共网站上工作,并且内置了cms系统,那么这可能是一个更简单的解决方案,而不是通过更新平台引入新的错误。
我的IIS没有定义IE11浏览器,因此它默认使用非常简单的浏览器配置文件,甚至不支持JavaScript。
另一种选择:设置IE11浏览器定义文件
当我编写自己的页面代码时,我遇到了这个问题,因为我忘记在表单元素上添加runat="server"
。