当我异步调用时,为什么我的表单正在回发?

时间:2010-05-12 19:20:42

标签: asp.net ajax

我正在使用简单的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 个答案:

答案 0 :(得分:2)

你是否将函数调用绑定到提交按钮?如果是这样,你需要在函数结束时返回false,这将停止标准表单帖子。

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

答案 1 :(得分:2)

好的,所以点击你正在做的事情:

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

你在哪里归还假?无处。 SavePage()返回false,但实际的点击功能永远不会返回。所以你可以这样做:

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

在这种情况下,SavePage()将返回false并返回返回值...

或者从SavePage()中取出return false;并执行:

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