ASP.NET:如何在客户端ajax完成后才提交回发

Ask*_*mov 1 javascript asp.net ajax jquery

我有一个按钮编码如下:

<asp:Button ID="save_all_filt" runat="server" Text="All data for filtered subjects"
                ClientIDMode="Static" OnClientClick="a= saveAllFilt();  return a; "
                OnClick="save_all_filt_Click" />
Run Code Online (Sandbox Code Playgroud)

saveAllFilt是一个调用常见JQuery ajax调用的函数.像这样的东西:

  function saveAllFilt() {
   jQuery.ajax({
    async: false,
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    type: "POST",
    url: contentURL,
    data: dataarray,
    success: function (msg) {
        // Some processing here. ONLY WHEN IT IS DONE, I NEED TO HAVE POSTBACK.
    },
    error: function (data) {

    }
});         // end of ajax call.
Run Code Online (Sandbox Code Playgroud)

}

我想要这样的事情:只有在ajax调用完成后才能继续执行onClick.我怎么能这样做?

pal*_*aѕн 7

您可以OnClick从按钮中删除该属性,并在OnClientClick属性中返回false,如:

<asp:Button ID="save_all_filt" runat="server" Text="All data for filtered subjects"
            ClientIDMode="Static" OnClientClick="saveAllFilt(); return false;" />
Run Code Online (Sandbox Code Playgroud)

并设置一个具有该OnClick属性的隐藏按钮,如:

<asp:Button ID="hdnButton" runat="server" Text="" Visible="False" 
            ClientIDMode="Static" OnClick="save_all_filt_Click" />
Run Code Online (Sandbox Code Playgroud)

并在您的ajax通话成功方法中单击该按钮,如:

success: function (msg) {
    // Some processing here. ONLY WHEN IT IS DONE, I NEED TO HAVE POSTBACK.
    $('#hdnButton').click();
}, 
Run Code Online (Sandbox Code Playgroud)