jQuery停止按钮回发

时间:2011-10-13 13:22:13

标签: javascript jquery postback

我需要一些jQuery的帮助并停止一个asp.net按钮回发。如果你看下面的代码,我定义了一个名为err的变量,并给它一个值0.然后我让jquery从Web服务获取一个字符串,它实际上是一个错误字符串。如果此字符串的长度为0,则将err等于1,否则将err等于2设置为因为我们正在返回业务规则错误。

当我调试应用程序时,似乎错误等于0,而且从不是1或2.似乎Web服务在我的最后一个if语句之后得到它的值,我应该停止回发。

任何帮助将不胜感激。谢谢。

   $(document).ready(function () {
      $('#<%=Button1.ClientID %>').click(function (e) {

        //Find out the hour and time of the current request
        var myString = $('#<%=DropDownList1.ClientID %>').val();
        var myResult = myString.split(":");
        var myHour = myResult[0];
        var myTime = myResult[1];
        var xDate = $("*[id$='hiddenDate']").val();
        var err = 0;
        //Check to see if the end time of the event somehow falls during a time when another event is occuring.
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "StudiesWebService.asmx/CheckEndTime",
            data: "{'UserName':'" + "jacksonm" + "','xDate':'" + xDate + "','xHour':'" + myHour + "','xMinutes':'" + myTime + "'}",
            dataType: "json",
            success: function (data) {
                var myReturnedString = data.d;
                //if the returned string length is greater than 0, then set err = 2
                if (myReturnedString.length = 0) {
                    err = 1;
                }
                else {
                    err = 2; 

                }

                $('.result').html(myReturnedString);
            },
            error: function (e) {
                $('.result').html("An Error occured checking the validity of this event." + e);
                err = 2;

            }



        });

         //stop the postback here depending on what err equals. 
        if (err == 2) {
            return false;
        }

        else {
            return true;

        }



    });

   });

<asp:Button ID="Button1" runat="server" Text="Submit Time" class="CLOSE" onclick="Button1_Click"   />

2 个答案:

答案 0 :(得分:2)

除非您的Ajax Web服务调用实际上是同步的,否则您的代码执行顺序并不像您期望的那样。向成功回调,错误回调以及此评论之前添加警报//stop the postback here depending on what err equals.最后一次警报应该首先发生,因为Web服务调用将不会返回并在当前函数完成之后执行。

在Ajax调用中,添加此选项async: false

$.ajax({
        type: "POST",
        async: false,

答案 1 :(得分:0)

您将myReturnedString.length var设置为0!

尝试更改行

if (myReturnedString.length = 0) {...}

if (myReturnedString.length == 0) {...}

编辑: 要停止回发你可以尝试:

    error: function (e) {
        $('.result').html("An Error occured checking the validity of this event." + e);
        err = 2;
        return false;
    }