Javascript 在重新加载的页面中使用Ajax调用时出现问题

Javascript 在重新加载的页面中使用Ajax调用时出现问题,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我是一个使用jquery和jquery mobile编写网站的新手。这将使用jQueryAjax以JSON文件的形式加载一组问题,然后用户处理这些问题。第一次打开时,页面使用如下代码成功打开2个JSON文件: 函数loadJSON(keytoload){ 我发现async必须设置为false才能工作。如果async为true,则显示的页面中没有JSON文件中的数据 用户完成一系列步骤后,将加载一个新的JSON文件来替换第一个JSON文件,这通常可以正常工作。但是,重新加载页面是不稳定的。在Win

我是一个使用jquery和jquery mobile编写网站的新手。这将使用jQueryAjax以JSON文件的形式加载一组问题,然后用户处理这些问题。第一次打开时,页面使用如下代码成功打开2个JSON文件:

函数loadJSON(keytoload){

我发现async必须设置为false才能工作。如果async为true,则显示的页面中没有JSON文件中的数据

用户完成一系列步骤后,将加载一个新的JSON文件来替换第一个JSON文件,这通常可以正常工作。但是,重新加载页面是不稳定的。在Windows上的Firefox/Chrome中可以正常工作,但如果在Android Chrome上加载页面时刷新页面,则会抛出一个错误。因此,我假设我的代码中有问题。


有更好的方法吗?

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

这里的正确架构是:

  • 在启动ajax之前显示加载div
  • 成功后,在页面中添加问题
  • 在下一次显示时,再次加载
  • 成功后,呈现新内容

  • 仅在success上设置一个变量是错误的;在success上,您根据后端的值呈现内容。另外,不建议以同步方式使用ajax,因为它会阻止脚本。

    您从何处调用此fn loadJSON?何处是“数据集”定义?您需要在
    success
    -处理程序中进行渲染,而不仅仅是
    dataset=keyload;
    然后您可以删除
    async:false
    错误是什么?控制台中是否打印了任何内容?理想情况下,您应该保持async为true,并在ajax调用成功后更新页面的相关部分(使用成功回调)。谢谢!这是我的错误。成功没有调用重新编写页面的函数。现在使用async:true可以正常工作,并且行为合理。感谢所有的贡献
    $.ajax({
        url: keytoload,
        dataType: "json",
        async: false,
        success: function (keyloaded)   {
                                         dataset=keyloaded;
                                         },
        error: function (request,error) {
                                        alert('Error has occurred please try again!');
                                        }
    });        
    }