Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.NET AJAX UpdatePanel-取消InitializeRequest中的回发不会设置为重新启用_Javascript_Asp.net_Ajax_Ajaxcontroltoolkit - Fatal编程技术网

Javascript ASP.NET AJAX UpdatePanel-取消InitializeRequest中的回发不会设置为重新启用

Javascript ASP.NET AJAX UpdatePanel-取消InitializeRequest中的回发不会设置为重新启用,javascript,asp.net,ajax,ajaxcontroltoolkit,Javascript,Asp.net,Ajax,Ajaxcontroltoolkit,在我页面上的ASP.NET AJAX UpdatePanel中,我有一个submit按钮,它应用了一些自定义javascript验证,根据验证结果设置了一个全局\u cancelGeneralSettingsUpdate标志 除非输入无效值、更正并重新提交,否则一切正常。在这种情况下,变量\u cancelGeneralSettingsUpdate被正确设置为false,但在页面尝试通过AJAX回发之前,未调用initializeRequest函数,导致回发失败 我需要能够有回发成功后,无效的输

在我页面上的ASP.NET AJAX UpdatePanel中,我有一个submit按钮,它应用了一些自定义javascript验证,根据验证结果设置了一个全局
\u cancelGeneralSettingsUpdate
标志

除非输入无效值、更正并重新提交,否则一切正常。在这种情况下,变量
\u cancelGeneralSettingsUpdate
被正确设置为
false
,但在页面尝试通过AJAX回发之前,未调用
initializeRequest
函数,导致回发失败

我需要能够有回发成功后,无效的输入已经纠正,用户再次点击提交按钮。不幸的是,一旦取消回发,我似乎没有正确连接到
PageRequestManager
管道。如果我刷新页面,所有内容都会再次工作,但会通过
args.set\u cancel(true)取消回发;
将我置于一种状态,在刷新页面之前,我无法通过AJAX进行进一步的回发

我如何重新启用回发,或使initializeRequest启动并在后续回发之前设置它

我已经附上了我的一些代码。假设
\u cancelGeneralSettingsUpdate
在任何回发尝试之前设置正确,我已经验证了这一点

var _cancelGeneralSettingsUpdate = false;

function initializeRequest(sender, args) {
        var pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
        if (!pageRequestManager.get_isInAsyncPostBack() & args.get_postBackElement().id == '<%= UpdateWorkgroupGeneralButton.ClientID %>')
        {
            if (_cancelGeneralSettingsUpdate) {
                args.set_cancel(true);
                // Show error message
            }
            else {
                args.set_cancel(false);
            }
        }
        else {
            args.set_cancel(false);
        }
    }
var\u cancelGeneralSettingsUpdate=false;
函数初始化请求(发送方,参数){
var pageRequestManager=Sys.WebForms.pageRequestManager.getInstance();
如果(!pageRequestManager.get_isInAsyncPostBack()&args.get_postBackElement().id='')
{
如果(_取消常规设置更新){
参数设置\取消(真);
//显示错误消息
}
否则{
参数设置\取消(false);
}
}
否则{
参数设置\取消(false);
}
}

思考我找到了解决方案。在我的例子中,正确的做法是在JavaScript验证失败时调用此函数

 Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
在上面的示例中,我调用了
args.set\u cancel(false)初始化请求
处理程序中的code>。虽然这对第一个实例有效,但在用户更正其无效输入并尝试重新提交表单后,它不允许将来的回发成功

这实际上只会中止当前正在进行的回发。在我的例子中,
\u doPostBack(…)
尚未被调用,因此
Sys.WebForms.PageRequestManager.getInstance().abortPostBack()静默未能完成我所期望的操作

最终的结果是使用了两个按钮的系统。如果不修复AJAX库,这是唯一合理的选择。

与此问题非常相似。