0

ASP.net Image Button OnClientClick で Ajax Post URL が機能しない。OnClientClick の Ajax Post URL から値を取得したい。

 <asp:ImageButton ID="btngo" runat="server" ImageUrl="~/oea_images/login_btn.png"
      OnClick="btngo_Click" OnClientClick="clean_all();" Width="80px" />

    function clean_all() {
        try {
            alert("enter");
            $.ajax({
                type: "POST",
                url: "WebForm9.aspx/ForceOut",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msgs) {
                    //alert(msgs);
                    //alert(msgs.d);
                    if (msgs.d == "out") {
                        alert("check");
                    }
                }
            });
        } catch (ex) {
            alert(ex.Message);
        }
    }
4

2 に答える 2

2

return falseポストバックを避けるために。また、asp Image ボタンの OnClick 属性を削除して、試してみてください。

       var varglobal=false;
                function clean_all() {
                        try {
                          if(!varglobal){
                            alert("enter");
                            $.ajax({
                                type: "POST",
                                url: "WebForm9.aspx/ForceOut",
                                data: "{}",
                                contentType: "application/json; charset=utf-8",
                                dataType: "json",
                                success: function (msgs) {
                                    //alert(msgs);
                                    //alert(msgs.d);
                                    if (msgs.d == "out") {
                                        alert("check");

                                        varglobal=true;
                                        $("#btngo").click();// hopes master page isn't                           used.

                                    }
                                }
                            });
                          }
                        } catch (ex) {
                            alert(ex.Message);
                        }
                     return varglobal;
                    }

これは ASP イメージ ボタンである return false ため、 はポスト バックを妨げない場合があります (ポストバックは の既定の機能ではありませんinput[type=image])。方法については、こちらを参照してください。

ポストバックが発生すると、サーバーへの Ajax リクエストがキャンセルされ、エラー関数が実行されます。これは、ポストバックを防止することで回避できます。

于 2013-08-23T09:55:28.223 に答える
0

このように使えばポストバックは回避できますが、その後のサーバー関数を直接呼び出すことはできません。成功のコールバックでポストバックする必要があります。

単純なアンカー タグを使用できます。asp:imagebutton は必要ありません。

<asp:ImageButton ID="btngo" runat="server" ImageUrl="~/oea_images/login_btn.png"
  OnClientClick="return clean_all();" Width="80px" />

function clean_all() {
    try {
        alert("enter");
        $.ajax({
            type: "POST",
            url: "WebForm9.aspx/ForceOut",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msgs) {                   
                if (msgs.d == "out") {                     
                    //call btngo_Click here with __doPostback()
                    // or execute the code inside "btngo_Click"
                    // on server after "ForceOut" completed
                }
            }
        });
    } catch (ex) {
        alert(ex.Message);
    }
return false;
}
于 2013-08-23T10:01:19.943 に答える