2012-09-26 49 views
0

我有超过六个功能,如下面的检索数据通过服务器的HTML页面和更新HTML,它继续运行,所有的时间,当网页被查看。我遇到的问题是当网页弹出一个警告,因为在Firefox中JQuery无响应的脚本错误

警报弹出警告

此页上的脚本可能忙后,也可能已停止响应。 您可以立即停止脚本,或者您可以继续查看脚本 是否会完成。

脚本: “HTTP://../javax.faces.resource/jquery-1.7.2.js LN = JS:?3983”

得到这个警告后,该网页的功能变得反应迟钝有没有解决这个问题的方法?是否因为我编码的方式存在问题?为什么它指向jQuery库?

代码:

function myDatapoll(){ 

      $.ajax({ 

        type : "GET", 
        url : '../jsonData/', 
        dataType : "json", 
        async : true, 
        cache : false, 

        success: function(data) { 
          if(data!=null){ 
           if($("span[id='accBal-"+data.pID+"']").length>0){ 

            $("span[id='accBal-"+data.pID+"']").text(parseFloat(data.accBal).toFixed(2)); 
           }else{ 
            $("#cash").html('<span id="accBal-'+data.pID+'">'+parseFloat(data.accBal).toFixed(2)+'</span>'); 
           } 
          } 
         setTimeout('myDatapoll()',1000); 
        }, 
        error : function() { 

        } 
      }); 
     } 
+1

建议:尝试使用chrome进行调试,以查看时间要求较高的部分(如果您尚未尝试) – Gabber

+0

“是否有解决此问题的方法?”是的,不要编程将太多内容加载到网站的无限循环。 – feeela

+0

@feeela如果需求是每秒连续检索数据,则没有其他选择,只能这样做,如果您有更好的方法来执行此操作,请指定Thx。 – Swarne27

回答

2

只是一个镜头:把你的setInterval函数外,而不是setTimeout的:

setInterval('myDatapoll()',1000); 

function myDatapoll(){ 
    //same as before but remove the setTimeout 
} 
+0

将其更改为setInterval并不会停止警报弹出窗口以调用 – Swarne27

+0

一个大的建议:不要下载[fiddler](http://www.fiddler2.com/fiddler2/)之类的东西并测试您的Web应用程序通信。这可能是由于一个错误的网址或类似的东西(你确定URL'../ myData.xhtml'?) – Gabber

+0

如果URL是错误的数据不会被检索。在这里,所有的数据被检索,我也可以检查该网址上的数据,这是完美检索 – Swarne27

0

不要在这种情况下使用的setInterval。无论请求是否完成,使用setInterval,myDatapoll()都会每1000毫秒执行一次。它只会增加麻烦。你已经实施的setTimeout方法是正确的做法。我不知道为什么你在Firefox中得到这个异常。

你确定dataType吗?您正在请求一个xhtml文件并且数据类型设置为“json”?

+0

尽管它是一个xhtml文件,但它输出的所有json theres除了json字符串以外都没有其他东西 – Swarne27

+0

那么为什么不将dataType设置为JSON呢?尽管该文件输出JSON,但jQuery认为它是跳过JSON评估的HTML。 – nairvijays

+0

dataType已经设置为json,而url指的是一个返回json字符串的xhtml文件,所有的数据也被更新。数据类型或xhtml文件没有问题 – Swarne27