在重新加载页面中使用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上加载页面时进行页面刷新则会报错。所以我认为我的代码在某处存在问题。
有没有更好的方法可以做到这一点?
答
这里你的问题是由于你没有正确使用ajax。你不知道需要多长时间才能从服务器返回结果。
正确的位置架构将是:在开始之前,阿贾克斯
- 显示的加载股利。
- 成功后,在页面上添加问题。
- 在下一个显示再次加载。
- 成功呈现新内容。
只是成功设置变量是错误的;如果成功,您将根据来自后端的值呈现内容。不建议以同步方式使用ajax,因为它可以阻止脚本。
+0
谢谢!那是我的错误。成功并没有调用重写页面的函数。现在适用于async:true并以合理的方式行事。感谢所有的贡献 – GilesJ
从哪里调用这个fn loadJSON? “数据集”在哪里定义? –
您需要在'success'处理程序中执行渲染,而不仅仅是'dataset = keyloaded;'然后您可以移除'async:false' –
错误是什么?什么东西印在控制台上? – twill