2016-10-20 101 views
0

帖子编辑页面重载之前执行:仅供参考,原来的Firefox 48是问题。使用Firefox 50时,代码将按预期执行。AJAX请求不因等待时间

我们已经在我们部门有一个小错误一些旧的代码,但因为我不是很精通AJAX我有解决它的问题。

预期功能是,用户点击网页上的元件,这触发在数据库中改变一个号码的请求。然后等待一段时间,然后重新加载页面。这是在onclick事件中执行的相关代码:

request('../lib/ajax_lists.php','sideedit',data); 
wait(500); //waiting until x ms passed 
window.location.reload(); 

我检查了这些行,它们似乎按预期工作,但不在一起。 什么情况是浏览器等待,然后重新加载,但数据库没有改变。 然后我检查了请求函数的工作原理,发现数据库查询没有问题。但为了查看我打印到请求答案的查询,我必须禁用重新加载。现在我可以看到该查询,但令我惊讶的是数据库也发生了变化。

我做了一些更多的测试,这是结果:

  • 包括如果 启用了页面重载函数的数据库查询它不能被正确执行的请求。
  • 如果我注释掉重新导入功能,如预期进行的请求,但当然没有需要重装的看到的变化。
  • 等待时间似乎并不重要。我将它提升到5000ms,但仍然无法工作。

任何想法?

+1

这是* *旧代码。随着AJAX你normall想从AJAX的响应和更新页面[无需重新加载。(http://jayblanchard.net/basics_of_jquery_ajax.html) –

+0

浏览器往往也重装之前中止未决的请求,也许这导致远程脚本失败。 [在PHP中有一个控制这个设置](http://php.net/manual/en/function.ignore-user-abort.php) – apokryfos

+0

我知道如果设计不同,重新加载不是必需的,但重写是不可能的。 我不得不尝试设置,但我仍然不知道为什么不执行请求正确,即使有足够多的时间来做到这一点。 – user7048513

回答

0

你可以试试下面的代码

<script type="text/javascript"> 
    setTimeout(function(){ 
     window.location.reload(); 
    }, 500); 
</script> 
+0

但是,这将只是重新加载页面,无论用户输入,而不是在用户点击元素并触发重新加载之后,对吧? – user7048513

+0

在页面加载再次加载500毫秒后,用户不需要触发器。但需要用户触发,代码块在$('button')中。点击(函数(){setTimeout(function(){window.location.reload(); },500); }); –