1. ホーム
  2. javascript

[解決済み] ASP.NETのポストバック(LinkButtonのクリック)を行うためにJavaScriptを使用する - ポストバックは発生するが、Clickイベントは発生しない

2022-02-19 20:33:58

質問

私は、あるスクリプトを使ってポストバックを起こしています。以下はその状況です。

  • ユーザーがリンクをクリックし、現在地を知る必要のある機能を実行する。
  • スクリプトがブラウザから現在地を取得(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)を持っています。しかし、これは決して呼び出されません。ポストバックは正常に行われますが、それを処理するために、Request["_]を検査する必要があります。 EVENTTARGET"]およびRequest[" _EVENTARGUMENT"] が、Page_Load 中に、それが私が望むポストバックであることを確認します。

btnSubmitLocation_Clickが呼び出されるようにするには、どのようにコードを修正すればよいですか?

PS - これが関連しているかどうかは分かりませんが、隠されたリンクボタンはUpdatePanelの中にあります。

解決方法は?

コントロールの ClientId を送信して __doPostback() を呼び出していることが問題だと思います(asp.net のリンクボタンを使用していると思われます)。ちょうど href が自動生成されます。

を呼び出してみてください。 prm.__doPostBack('ctr11837$Locator$btnSubmitLocation', 'inline') の代わりに

EDIT: そして、アンダースコアを落としたようです。 prm.__doPostBack() あなたのコードを確認してください。