首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有长循环的IE 8-9 JavaScript问题

带有长循环的IE 8-9 JavaScript问题
EN

Stack Overflow用户
提问于 2012-01-18 15:42:05
回答 2查看 449关注 0票数 6

我得到了以下坚持的JS问题,只针对IE8-9,在其他浏览器中,我的代码工作得很好。

案例:我在JS中有以下代码,它应该启动一些服务器进程并更新服务器端状态的进度条,Jquery提供了这样的内容:

代码语言:javascript
复制
 $("#btnSendUser").click(function (event) {                
                $.ajax({
                    type: "POST",
                    url: "/StartLongProcess",
                    dataType: "json",
                    traditional: true,
                    data: { userIds: users },
                    success: function (result) {
                        console.log("Process start");
                    }
                });
                var processId = 0;
                getStatus(processId);
            });

        function getStatus(processId) {
            var url = '/GetStatus';
            $.get(url, { clientProcessId: processId }, function (data) {
                if (!data.IsDone) {
                    $("#progress").progressbar({ value: data.Progress });                                        
                    window.setTimeout("getStatus(" + processId + ")", 350);
                }
                else {
                    $("#progress").progressbar({ value: 100 });      
                    console.log("Done");                                                            
                };
            });                                  
        }

在当前控制器中的StartLongProcess方法中,我以这样的方式启动长服务器进程:

代码语言:javascript
复制
[ValidateInput(false)]
        public void StartLongProcess(Guid[] userIds)
        {       
            ...
            var processTask = new LongProcess(MesssageService.Email.SendMails);
            processTask.BeginInvoke(service.LongProcess(userIds), new AsyncCallback(EndSendingProcess), processTask);
        }

下面是读取当前状态的方法:

代码语言:javascript
复制
 /// <summary>
        /// Gets the current progress.
        /// </summary>
        /// <param name="id">The id.</param>
        public JsonResult GetCurrentProgress(int clientProcessId)
        {
            ControllerContext.HttpContext.Response.AddHeader("cache-control", "no-cache");
            var currentProgress = MesssageService.Email.GetCurrentLog(clientProcessId);            
            return Json(currentProgress ?? new LogMessage(0), JsonRequestBehavior.AllowGet);
        }

我在Chrome和FF中测试了这段代码,在那些浏览器中,进度条和进程总是正确完成的。但在IE8-9中,getStatus函数似乎不能以这种方式调用。是真的吗?对于所有浏览器来说,实现我的任务的最佳方法是什么?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 14:28:24

@神职人员总是可以尝试

代码语言:javascript
复制
window.setTimeout(function() {getStatus(processId)},350);

而不是

代码语言:javascript
复制
window.setTimeout("getStatus(" + processId + ")", 350);

。-安东尼·格里斯特1月18日22:50

票数 0
EN

Stack Overflow用户

发布于 2012-01-24 14:16:07

IE8不提供'console.log()‘作为环境函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8912957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档