почему моя форма выполняет постбэк, когда я звоню асинхронно? - PullRequest
0 голосов
/ 12 мая 2010

Я использую простую веб-страницу asp.net с несколькими полями на ней, и когда пользователь нажимает кнопку отправки, я звоню асинхронно и публикую данные.

НО, вся моя страница отправляется обратно, и я даже не вижу сообщения, которое пытаюсь отобразить, если мои данные были опубликованы успешно.

вот моя страница.


     <div id="status"></div>   
    <asp:Label runat="server" ID='lbl'  >Name:</asp:Label>
                 <asp:TextBox ID="txtName" runat='server'></asp:TextBox>               

    <asp:Label runat="server" ID='Label4'  >Host Name:</asp:Label>
                <asp:TextBox ID="txtHost" runat='server'></asp:TextBox>

    <asp:Label runat="server" ID='Label2'  >Start Date:</asp:Label>
                 <asp:TextBox ID="txtStartDate" runat='server'  ></asp:TextBox>

    <asp:Label runat="server" ID='Label6'  >End Date:</asp:Label>
                <asp:TextBox ID="txtEndDate" runat='server'  ></asp:TextBox>        


          <ul>
          <li>
            <button id="btnCancel" name="btnCancel" type="button">
              Cancel</button></li>
          <li>
            <button id="btnReset" name="btnReset" type="reset">
              Reset</button></li>
          <li>
            <button id="btnSubmit" name="btnSubmit" type="submit">
              Submit</button></li>
        </ul>
    </p> 
    </form>
</div>

//Store new Contract Request Methods
    function processCompletedContactStore(response) {

       if (!response) {
           showErrorMsg('No Contacts Returned');
           return;
       }
       else { 
           if (response.Message == 'update') {
               $("#status").fadeTo(500, 1, function() { $(this).html("Updated successfully!").fadeTo(500, 150); })
           }
       } 
    }


function SavePage() {

    var request = buildNewContactRequest();

    ContactServiceProxy.invoke({ serviceMethod: "PostNewContact",
        data: { request: request },
        callback: function(response) {     
            processCompletedContactStore(response);
        },
        error: function(xhr, errorMsg, thrown) {
            postErrorAndUnBlockUI(xhr, errorMsg, thrown);
        }
    }); 
    return false; 
} 

$(document).ready(function() 
{
    $("#btnSubmit").click(function() {     
            SavePage();
        });
});

Ответы [ 2 ]

2 голосов
/ 12 мая 2010

Хорошо, вы нажимаете на клик:

$("#btnSubmit").click(function() {     
        SavePage();
    });

Куда ты возвращаешь ложь? Нигде. SavePage () возвращает false, но это никогда не возвращается в реальной функции щелчка. Так что вы можете сделать:

$("#btnSubmit").click(function() {     
        return SavePage();
    });

В этом случае SavePage () вернет false, и это возвращаемое значение будет возвращено ...

Или возьмите return false; из SavePage () и выполните:

$("#btnSubmit").click(function() {     
        SavePage();
        return false;
    });
2 голосов
/ 12 мая 2010

Вы связываете вызов функции с кнопкой отправки? если это так, вам нужно вернуть false в конце функции, это останавливает стандартную форму публикации.

 $("#btnSubmit").click(function() {     
           return SavePage();
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...