2017-11-03 10 views
0

私はASP.Netを使用しており、JavaScript関数の後にが完全に終了した後にサーバー側の関数を呼び出す必要があります。OnClientClick AJAXが終了した後にOnClickを発生させよう

問題は、クライアントコードが終了し、隠し値が空になる前にサーバーコードを実行していることです。 AJAXの呼び出しはドメイン間で行われますので、asyncを使用してください:falseは動作していません。

少し基本的な説明のために、以下の基本コードを追加しました。

HTML

<input id="hdnToken" type="hidden" name="hdntoken" value="" /> 
<asp:Button ID="btnSubmit" Text="Submit" OnClientClick="return getToken();" OnClick="btnSubmit_Click" runat="Server"></asp:Button> 

はJavaScript

function getToken() { 
    $.ajax({ 
     async: false, // Ignored across domains 
     method: "POST", 
     contentType: "application/json; charset=utf-8", 
     dataType: "jsonp", 
     success: OnSuccess, 
     error: OnError 
    }); 

    function OnSuccess(response) { 
     $('#hdnToken').val(response); 
     return true; 
    } 

    function OnError(response) { 
     console.log(response); 
     return false; 
    } 
}; 

ASP.Netサーバー側のコード

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    var hidden = Request.Form["hdnToken"]; 
} 

答えて

1

簡単なトリックは、テキストのないが、してページ上のLinkBut​​tonを置くことであろうOnClickイベント。

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"></asp:LinkButton> 

その後、あなたはsimulateClick()が実行されたときに今、それは背後にあるコードでLinkButton1_Click方法をトリガーウィルUniqueID

<script type="text/javascript"> 
    function simulateClick() { 
     __doPostBack('<%= LinkButton1.UniqueID %>', ''); 
    } 
</script> 

とそのリンクからポストバックをシミュレートすることができます。

ダミーLinkBut​​tonコントロールを配置することで、あなたが魅力のようなenableEventValidation

+0

作品を無効にする必要はありません、ありがとう – fizgog

関連する問題