【问题标题】:Using JavaScript to do ASP.NET postback (clicking LinkButton) - postback occurs but not Click event使用 JavaScript 进行 ASP.NET 回发(单击 LinkBut​​ton) - 回发发生但未发生 Click 事件
【发布时间】:2012-12-01 22:47:34
【问题描述】:

我正在使用一些脚本来导致回发。这是上下文:

  • 用户单击链接以执行需要知道其当前位置的功能
  • 脚本从浏览器获取当前位置(使用 navigator.geolocation.getCurrentPosition)
  • 当它有位置时(上述调用是异步的 - 您必须等待用户同意分享他们的位置)我希望脚本将位置发布回服务器。我通过模拟隐藏链接按钮的回发来做到这一点。

以下是相关代码:

function submitLocation_Inline(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.getElementById("ctr11837_Locator_hLat").value = latitude;
document.getElementById("ctr11837_Locator_hLng").value = longitude;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('ctr11837_Locator_btnSubmitLocation', 'inline');
} 

<a href="javascript:__doPostBack('ctr11837$Locator$btnSubmitLocation','')" id="ctr11837_Locator_btnSubmitLocation"></a>

在后面的代码中,我有一个用于隐藏链接按钮 (btnSubmitLocation_Click) 上的单击事件的处理程序。但是,这永远不会被调用。回发确实发生得很好,但要处理它,我必须在 Page_Load 期间检查 Request["_EVENTTARGET"] 和 Request["_EVENTARGUMENT"] 以验证它是我想要的回发。

如何调整我的代码以调用 btnSubmitLocation_Click?

PS - 不确定这是否相关:隐藏的链接按钮位于 UpdatePanel 内。

【问题讨论】:

  • 检查 __EventTarget 隐藏字段并手动触发点击处理程序是唯一的方法。

标签: javascript asp.net postback pagerequestmanager


【解决方案1】:

我认为问题在于您正在调用 __doPostback() 发送控件的 ClientId(我想您正在使用 asp.net 链接按钮)。只需看一下链接按钮自动生成的href

请尝试致电 prm.__doPostBack('ctr11837$Locator$btnSubmitLocation', 'inline')

编辑:看起来您在prm.__doPostBack() 中删除了一个下划线,请检查您的代码。

【讨论】:

  • 谢谢 - 事实证明这是 90% 正确,所以接受答案。您需要在调用 __doPostBack 时使用“带美元的唯一 ID”(带有双下划线的函数 - 如所有自动生成的回发调用中所见)。唯一不太正确的是调用 prm.__doPostBack() 不起作用 - 您只需调用 __doPostBack()。然而,我之前使用了一个 prm._doPostBack() 函数(带有一个下划线)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多