问题描述:在调用AJAX javascript 时出现 “ Microsoft JScript runtime error: '__pendingCallbacks[...].async' is null or not an object”; 的错误。 这种错误大多数发生在: 第一种情况:AJAX 调用里面包含有AJAX—callback的函数; 第二种情况:如果在处理回调的函数中用了一个变量名为“i”,听起来这个问题很奇怪,但确时是这样的。 CASE 1: 是因为 AJAX中调用中含有回调事件, 下面这个例子是说明这个问题的:函数 doSomeAjaxCall中调用服务器方法,前处理返回值, 在下一次调用时,在任何一个回调函数中就会出现这种错误。也许我说的不是很 清楚,其实我是第一次翻译这种文档的。 // Used by AjaxValidator to initialte the callback to server. function doSomeAjaxCall(validatorInstance) { WebForm_DoCallback('__Page', “someParam1”, OnValidationSuccess, “someParam2”, null, true) } function OnValidationSuccess(newValue, imageInstance) { // do something... //This causes the error WebForm_DoCallback('__Page', "", OnSecondCallSuccedded, "Update", null, true) ; } function OnSecondCallSuccedded (newValue, imageInstance) { // do something... } 解决1 解决这个问题,其实AJAX框架在客户端的WebForm_CallbackComplete()中存在一个错误, 在每一次执行回调是都要调用它的,它的说明在一个动态生成的AXD-file中。在AJAX中的每一个调用函数显示为“被调用”,在这个清单中调用这个清单中被标识的,但这种调用 线路不是安全的。 想象一个:在第一次执行回调时,会执行到WebForm_CallbackComplete()。此时回调标记次数是1,当第二次调用时,调用(WebForm_DoCallback),并返回信息,此时回调标记次数是 2 因为变量i,在WebForm_CallbackComplete中不是从1开始,而是从2开始了。 // Used by AjaxValidator to initialte the callback to server. function doSomeAjaxCall(validatorInstance) { WebForm_DoCallback('__Page', “someParam1”, OnValidationSuccess, “someParam2”, OnValidationError, true) } function OnValidationSuccess(newValue, imageInstance) { setTimeout(“renderSuccess(‘” + newValue + “’)”, 1); } function OnValidationError(newValue, imageInstance) { } function renderSuccess(newValue) { // Do something //This does not cause the error WebForm_DoCallback('__Page', "", OnUpdateSuccedded, "Update", OnUpdateError, true) ; } CASE 2 由于变量i的原因,你在使用回的函数中使用了变量i; 设想你在使用回调的函数之后,它是从AJAX framework框架中处理回调, function OnValidationSuccess(newValue, imageInstance) { for(i = 0; i < 4; i++ ) { //Do anything } } 执行时会产生 “Microsoft JScript runtime error: '__pendingCallbacks[...].async' is null or not an object” 的错误。 解决这个问题非常简单,仅只需将使用的变量I换一个就可以了, 如: function OnValidationSuccess(newValue, imageInstance) { for(n = 0; n < 4; n++ ) { //Do anything } } 这个问题在于WebForm_CallbackComplete这个函数中使用了全局变量i 这样如果你在你的程序中使用了I,那么就冲充了。 Reamrks 动态生成的AXD—CODE为 function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit) { this.eventTarget = eventTarget; this.eventArgument = eventArgument; this.validation = validation; this.validationGroup = validationGroup; this.actionUrl = actionUrl; this.trackFocus = trackFocus; this.clientSubmit = clientSubmit; } function WebForm_DoPostBackWithOptions(options) { var validationResult = true; if (options.validation) { if (typeof(Page_ClientValidate) == 'function') { validationResult = Page_ClientValidate(options.validationGroup); } } if (validationResult) { if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) { theForm.action = options.actionUrl; } if (options.trackFocus) { var lastFocus = theForm.elements["__LASTFOCUS"]; if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) { if (typeof(document.activeElement) == "undefined") { . . .admin管理员组文章数量:1576384
本文标签: 错误pendingCallbacksAsync
版权声明:本文标题:'__pendingCallbacks[...].async' 错误 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727799569a1130664.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论