gpt4 book ai didi

jquery - 如何从文件中获取 json 数据(jQuery)

转载 作者:行者123 更新时间:2023-12-01 07:26:26 25 4
gpt4 key购买 nike

就是想不通。我有一个存储为 JSON 文件的大对象,我想访问它一次并使用它多次:

var myjson = new Object();
$.getJSON("myJSON.js", function(json) {
myjson = JSON.stringify(json);
});
$('#console').append(myjson);

这没有任何作用。我知道这是一个范围问题。我只是不知道如何做我想做的事。我必须在 $.getJSON 调用中执行所有函数吗?还是有办法传递我可以在整个运行时使用的对象?

最佳答案

It's a scope issue, I know.

不,这不是范围问题。这是您对 AJAX 工作原理的理解的问题。 AJAX 是异步的。这意味着当您发送 AJAX 请求时,发送此请求的函数(在您的情况下为 $.getJSON)立即返回。仅应在成功回调中使用结果。这个回调函数可以稍后调用。这实际上并不取决于您在未来的什么时候会发生这种情况。如果您的服务器出现错误,实际上可能永远不会发生。

因此,唯一可以可靠地使用 AJAX 调用后服务器发送的结果的地方是在成功回调中:

$.getJSON("myJSON.js", function(json) {
// here and only here you can access the results of your AJAX call.
$('#console').append(JSON.stringify(json));
});

您可以做一些可怕的事情,例如对服务器执行同步调用:

var myjson = { };
$.ajax({
url: 'myJSON.js',
dataType: 'json',
async: false,
success: function(json) {
myjson = JSON.stringify(json);
}
});
$('#console').append(myjson);

async: false 选项进行同步调用。显然,这完全违背了 AJAX 的全部目的,因为它会在此调用期间卡住浏览器。您最好直接将 myJSON.js 包含为脚本标记:

<script type="text/javascript" src="myJSON.js"></script>

您可能从这种方法中获得的另一个好处是,浏览器将确保您在执行任何其他脚本之前完全加载该脚本。因此,以下内容可以正常工作:

<script type="text/javascript" src="myJSON.js"></script>
<script type="text/javascript">
var myjson = someJavascriptVariableThatYouDeclaredInMyJSON;
</script>

然后是:

<script type="text/javascript">
$('#console').append(JSON.stringify(myjson));
</script>

关于jquery - 如何从文件中获取 json 数据(jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com