Ajax Post URL无法在ASP.net图像按钮OnClientClickClick上工作

时间:2013-08-23 09:47:16

标签: javascript asp.net ajax

Ajax Post URL无法在ASP.net图像按钮OnClientClick上工作。我想通过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);
        }
    }

2 个答案:

答案 0 :(得分:2)

return false以避免回发。同时删除asp图像按钮的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]的默认功能) 。请参考here了解具体方法。

当发生回发时,对服务器的Ajax请求将被取消,并且将执行错误功能。您可以通过阻止回发来避免这种情况。

答案 1 :(得分: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;
}