在重新加载页面中使用Ajax调用的问题

问题描述:

我是一个使用jquery和jquery mobile编写网站的新手。这会使用jQuery ajax以JSON文件的形式加载一组问题,然后用户通过问题解决问题。在第一次打开,页面打开成功使用的代码看起来像这样2个JSON文件:在重新加载页面中使用Ajax调用的问题

功能loadJSON(keytoload){

$.ajax({ 
    url: keytoload, 
    dataType: "json", 
    async: false, 
    success: function (keyloaded) { 
            dataset=keyloaded; 
            }, 
    error: function (request,error) { 
            alert('Error has occurred please try again!'); 
            } 
});   
} 

我发现异步必须设置为false这个工作。如果async为true,则不显示JSON文件中的数据而显示页面。

用户完成一系列步骤后,会加载一个新的JSON文件来替换第一个JSON文件,这通常可以正常工作。但是,重新加载页面是不稳定的。它在Windows上的Firefox/Chrome中运行良好,但如果在Android Chrome上加载页面时进行页面刷新则会报错。所以我认为我的代码在某处存在问题。

有没有更好的方法可以做到这一点?

+0

从哪里调用这个fn loadJSON? “数据集”在哪里定义? –

+0

您需要在'success'处理程序中执行渲染,而不仅仅是'dataset = keyloaded;'然后您可以移除'async:false' –

+0

错误是什么?什么东西印在控制台上? – twill

这里你的问题是由于你没有正确使用ajax。你不知道需要多长时间才能从服务器返回结果。

正确的位置架构将是:在开始之前,阿贾克斯

  1. 显示的加载股利。
  2. 成功后,在页面上添加问题。
  3. 在下一个显示再次加载。
  4. 成功呈现新内容。

只是成功设置变量是错误的;如果成功,您将根据来自后端的值呈现内容。不建议以同步方式使用ajax,因为它可以阻止脚本。

+0

谢谢!那是我的错误。成功并没有调用重写页面的函数。现在适用于async:true并以合理的方式行事。感谢所有的贡献 – GilesJ