我想在ASP.NET平台上使用ajax。为此我使用ScriptManager。我只需在“jQuery”之后用document is ready添加此脚本。
$(document).ready(function () {
// sync
{{scopeName}}_init();
// async
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (sender, args) {
{{scopeName}}_init();
});
});
然后发生了这样一个神秘的javascript错误。
未捕获的ReferenceError:未定义Sys
如果javascript在第一次请求后停止工作,我有什么问题?
答案 0 :(得分:0)
解决方案不会使用Sys.WebForms.PageRequestManager条件
跳过“undefined”if (typeof(Sys) !== 'undefined') {
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (sender, args) {
{{scopeName}}_init();
});
}
对于回发,我们初始化函数就是文档准备就绪 - 同步部分。
对于ScriptManager块中的ajax请求,我们需要在“add_pageLoaded”上注册init函数。之后,每次脚本在第一次请求时都能正常工作 - 异步部分。
最重要的被忽视的步骤是注册“add_endRequest”,这样可以解决问题。
整个示例代码:
$(document).ready(function () {
// sync
console.log("sync");
{{scopeName}}_init();
// async
pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
pageRequestManager.add_endRequest({{scopeName}}_onAsyncEndRequest);
pageRequestManager.add_pageLoaded({{scopeName}}_onAsyncPageLoaded);
});
function {{scopeName}}_onAsyncEndRequest(sender, args) {
console.log("async end");
console.log(args);
}
function {{scopeName}}_onAsyncPageLoaded(sender, args) {
console.log("async start");
{{scopeName}}_init();
}
答案 1 :(得分:0)
我最近亲自遇到了这个问题,因此我想输入此内容可以帮助可能遇到相同/相似问题的人。
我发现,当VS部署应用程序时,我开始在生产服务器上运行该应用程序时,我的浏览器正在寻找ScriptResource.axd
(对于ASP.NET AJAX)和WebResource.axd
,却不在根目录中找到任何一个文件。
有关这些文件的更多信息:What is WebResource.axd?