Javascript 如何在页面加载时获取一些JSON文件?(同步不可避免地是坏的吗)?

Javascript 如何在页面加载时获取一些JSON文件?(同步不可避免地是坏的吗)?,javascript,jquery,ajax,asynchronous,Javascript,Jquery,Ajax,Asynchronous,我有一个web应用程序,它的全部功能都依赖于从服务器获取并在加载主页时处理的3个JSON文件。目前,我使用jQueryAjax调用,并使用“async:false”,效果很好。但我读到的每一篇文章都在向我大喊,同步AJAX是邪恶的,我应该将其重构为异步行为。当然,我可以这样做,代价是(在我看来)让代码变得更加混乱,因为整个应用程序都将加载到AJAX成功函数中 我的问题是,我是否真的应该继续进行重构,因为在我看来,这可能是同步行为的合理理由。是的,如果AJAX调用出现问题,应用程序将没有响应,但是

我有一个web应用程序,它的全部功能都依赖于从服务器获取并在加载主页时处理的3个JSON文件。目前,我使用jQueryAjax调用,并使用“async:false”,效果很好。但我读到的每一篇文章都在向我大喊,同步AJAX是邪恶的,我应该将其重构为异步行为。当然,我可以这样做,代价是(在我看来)让代码变得更加混乱,因为整个应用程序都将加载到AJAX成功函数中

我的问题是,我是否真的应该继续进行重构,因为在我看来,这可能是同步行为的合理理由。是的,如果AJAX调用出现问题,应用程序将没有响应,但是如果加载一个关键JS文件出现问题,应用程序也将没有响应,比如说,不是吗?在JSON文件加载之前,应用程序实际上是不可用的(不能做任何有价值的事情),这有关系吗


也许我错过了一种加载JSON文件的简单方法,它根本不涉及AJAX的使用?那当然是一个更干净的解决方案。

它有效吗?首先,也最重要的是不要“修复”未损坏的东西

至于您是否应该使用异步模式,您的这个应用程序是在本地局域网上运行还是在公共互联网上运行?在前一种情况下,可以安全地假设您不太可能出现带宽问题,因此除了理想的原因外,很少有其他原因可以切换到异步


但是,如果它在公共internet上运行,则可能会出现各种与网络相关的问题,您不能依靠服务器/客户端连接在会话过程中保持良好状态。在这种情况下,必须采用具有某种加载/活动屏幕的异步方法,以及适当稳健的错误处理/恢复,以及在理想连接状态不可用时,如果文件位于服务器中,则尽可能向下修改到更简单的应用程序版本,或许您可以尝试以下方法:

在文件中这样定义JSON:

data = '[
    {"name" : "Ashwin", "age" : "20"},
    {"name" : "Abhinandan", "age" : "20"}
]';
然后,您只需在HTML中包含json文件

<script type="text/javascript" src="data.json"></script>
<script type="text/javascript" src="javascrip.js"></script>
免责声明:
我10分钟前才发现这一点

我采用了我在评论中提到的方法,以回应Defesa Esquerdo的建议。它运行良好,只是一个简单的改变。我觉得我在这里回避了我自己的问题,但这是解决我问题的一个好办法——简化代码,这也提高了效率。

你应该问自己的一个问题是“如果加载JSON需要很长时间,我的网站会工作吗?”来自“从服务器获取文件并在加载主页时处理文件”我只是想知道,为什么不能将json文件加载到页面中,然后需要ajax?我以前遇到过这个链接,但没有认真考虑过,因为json文件的格式实际上应该不是json。不过,在重读时,我意识到这给了我一个理想的解决方案,因为我可以在服务器端生成所需的JS文件,其中包含JSON数据和变量赋值。不管怎么说,JSON是在服务器端生成的,所以我需要做的就是稍微调整一下。有人认为这是一种非常错误的方法吗?我是说糟糕的编程风格会让人在将来后悔?我发现它非常有用,但我真的很担心这种方法,它是什么样的糟糕编程风格?我没有提出异议,但有一点怀疑,不是一个硬核程序员,但感觉有点不标准,这里有专家提供建议吗?这种方法是完全有效的,绝不是不标准的。有一个缺点是它在全局范围内引入JSON数据,但如果您可以接受,那么就没有理由不这样做。答案根据活动、最早的投票改变位置。请在答案注释部分提及,或标记接受答案
var mydata = JSON.parse(data);