我有以下代码从外部源提取一些数据:
$(document).ready(function(){
$.getJSON('mydata.json',function(data) {
var ned = data.names.ned;
return(ned);
});
});
在我的JSON中我有:
{
"names": {
"ned": "Eddard Stark",
"jon": "Jon Snow",
"tyrion": "Tyrion Lannister"
}
}
我想知道如何在另一个函数上使用变量' ned '。另外,我想进一步设置其他变量,如'jon'和'tyrion',以便以后能够使用,但我无法将它们传递给另一个函数。
JSON回调必须在页面加载时完成才能正确使用某些应用程序功能,这就是文档就绪的原因。
答案 0 :(得分:2)
您可以使用jquery $.Deferred
轻松完成此操作:
function getNed()
{
return $.getJSON('mydata.json').pipe(function(data) {
var ned = data.names.ned;
return ned;
});
}
getNed().done(function(ned) {
alert(ned);
});
答案 1 :(得分:0)
快速/简单的方法是声明一个全局变量,然后在获得它时用json调用中的数据填充它。
<script>
var myJsonData; //Make this a very unique name, as you may conflict with other variables in plugins and such.
$(document).ready(function(){
$.getJSON('mydata.json',function(data) {
myJsonData = data;
var ned = data.names.ned;
return(ned);
});
});
</script>
但是,请注意,您的getJSON调用可能需要很长时间,并且在使用之前必须勤于检查myJsonData
变量是否未定义。或者,您可以从json回调中调用某种初始化函数。