JQuery кнопка остановки остановки - PullRequest
0 голосов
/ 13 октября 2011

Мне нужна помощь с jQuery и остановкой обратной передачи кнопки asp.net. Если вы посмотрите на приведенный ниже код, я определил переменную с именем err и присвоил ей значение 0. Затем у меня есть jquery для получения строки из веб-службы, на самом деле это строка ошибки. Если длина этой строки равна 0, тогда установите err равным 1, в противном случае установите err равным 2, потому что мы получаем ошибку бизнес-правила.

Когда я отлаживаю приложение, кажется, что err равно 0, а не 1 или 2. Также кажется, что веб-сервис получает свое значение после моего последнего оператора 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 ]

2 голосов
/ 13 октября 2011

Если ваш вызов веб-службы Ajax в действительности не является синхронным, то порядок выполнения вашего кода не соответствует ожидаемому. Добавьте предупреждение к вашему успешному обратному вызову, обратному вызову с ошибкой и прямо перед этим комментарием //stop the postback here depending on what err equals. Последнее предупреждение должно произойти первым, поскольку вызов веб-службы не будет возвращаться и выполняться до тех пор, пока текущая функция не завершится.

В вызове Ajax добавьте эту опцию async: false:

$.ajax({
        type: "POST",
        async: false,
0 голосов
/ 13 октября 2011

Вы устанавливаете переменную myReturnedString.length на 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;
    }
...