asp.net如何在ajax完成后恢复按钮的回发?

时间:2014-02-18 19:18:18

标签: c# asp.net ajax vb.net button

我有一个按钮,并在后面的代码中有btnSubmit.Click的回发功能。

<asp:Button runat="server" ID="btnSubmit" Text="Submit"  UseSubmitBehavior="true" OnClientClick="ajaxCall(); return false;" />

现在,我想做一个事前操作,它将调用ajax进行一些计算,并有一个确认框允许用户点击“确定” - 恢复原始按钮的功能做到回发,或者“取消“ - 只需取消回发。

    <script type="text/javascript" language="javascript">
    function ajaxCall() {
            $.ajax({
                dataType: 'json',
                type: 'GET',
                contentType: "application/json; charset=utf-8",
                url: "ODS.aspx/ClientCall",
                success: function (msg) {
                    alert(msg);
                }, error: function (data) {
                    alert(data);
                }
            });
    }
</script>

我一直只是触发确认框,但“OK”无效,或者回发将通过ajax。我知道必须有一个聪明的方法来做到这一点,打断正常按钮提交回发行为,但不想引入更多控件,像hiddenbutton这样的东西,感觉就像非常hacky方式。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不知道天气它会解决你的问题,但你可以使用ajaxStart和ajaxStop方法,在那些方法中你可以编写你的确认逻辑。

答案 1 :(得分:0)

ajaxStart和ajaxStop以及jquery .after()的另一个选项。

如果您使用ASP:LinkBut​​ton,您可以将href属性存储在变量中,当客户端单击时将其删除,当您需要它执行时只执行eval([HREFVariable])。

这是来自记忆,但我会在一分钟内查看:

$('a.whatever').on("click", function(){
e.preventDefault();//stop the post back
var defaultAction = $(this).prop("href");

//do stuff

//you are ready now
eval(defaultAction);

});

这是有效的,因为ASP.Net在href中做回发,如javascript:__ doPostBack(...);

所以这只是调用你要做的功能。

编辑2 因为您想要使用asp:按钮

这样的事情应该有效

$('a.whatever').on("click", function(){
    e.preventDefault();//stop the post back
    var id = $(this).prop('id');


    //do stuff

//you are ready now
__doPostBack(id, '');

});

我猜这个部分。这应该发回正确的帖子,但我还没有测试过。