无法清除临时存储空间

时间:2015-07-11 14:55:43

标签: javascript jquery

  

无法清除临时存储:确定某些文件对于Web应用程序内的访问不安全,或者对文件资源进行了太多调用。的SecurityError

我在控制台中收到此错误。我有一个脚本名称script.js,它使ajax调用从php中检索数据。

知道为什么吗?

这是我的jQuery脚本

$(document).ready(function() {

  var loading = false;
  var docHeight = $(window).height();

  $('.timeline').css({minHeight: docHeight});

  function get_tl_post() {

    if (loading==false) {

      loading = true;

      $.ajax({
        type:"POST",
        url:"timeline.php",
        data:"data=instagram",
        beforeSend:function(){
           $('.loader').fadeIn("slow");
        },
        complete:function(){
          loading = false;
          $('.loader').fadeOut("slow");
        },
        success:function(data) {
          if(data=="error")
          {
            get_tl_post();
          }
          $(data).hide().appendTo(".timeline").fadeIn(1000); 
        }
      });
    }
  }

  $(window).scroll(function(){
    if ($(window).scrollTop() == $(document).height() - $(window).height()) {
      get_tl_post();
    }
  });
});

3 个答案:

答案 0 :(得分:8)

这是由于您的资源的网络映射。

换句话说,您可能在Chrome开发工具中添加了添加的工作区文件夹。 现在,当您尝试在某些文件中进行更改时,它会向文件系统发出请求。这工作正常一段时间。但是,在某些情况下,您会删除网络映射。

然后,当您尝试在浏览器上打开该网页时,它可能会或可能不会要求重新映射网络资源,但仍尝试更新文件系统。 那是你得到这个错误的时候。 你的脚本没有任何问题。

现在唯一的解决方案可能是删除缓存,然后重新启动系统。 如果问题仍然存在,您可以简单地重新安装chrome,这应该是固定的。

此外,有时网络映射也会导致其他几个问题。 例如,使CSS文件大小为75MB或更高。因此,在使用网络映射时必须采取预防措施。

  

可选择如果您使用的是Mac ...或者甚至在Windows上并且拥有sh   命令可用。

sudo find / -type f -size +50000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

在你的终端点击这个以查找超过50MB的罪魁祸首个人文件。你可以删除它们。

  

注意:上述命令的作用是,它会找到超过50MB的所有单个文件,并逐个在终端上打印。

答案 1 :(得分:2)

如果我猜我会说你的timeline.php脚本总是在返回"错误"所以你递归地拨打了太多的电话,浏览器阻止它们。

尝试消除递归函数调用,看看是否能解决问题。

删除以下3行,然后重试:

if (data == "error")
{
    get_tl_post();
}

答案 2 :(得分:1)

如果您的ajax调用由于某种原因失败,则可能会导致get_tl_post();的递归调用过多。

我建议您使用error属性进行错误处理,并避免递归调用函数的情况。一个想法可能是设置一个类似&#34的策略;如果请求失败/数据有错误,请等待一段时间,然后重试。如果进行了X重试,则显示错误代码并停止请求"。

以下是未经测试的代码的示例,以便向您展示这个想法:

var attempts = 0;
$.ajax({
  //Rest of properties
  success: function(data) {

    if(data == "error") {
      if(attempts < 3) {
        setTimeout(function(){
          get_tl_post();
          ++attempts;
        }, 2000);
      } else {
        //output failure here.
      }

    }

    //Rest of code....
  }
});