我有data1.json
个文件
[ { “BID”:“4569749”, }, { “BID”:“466759”, }, { “BID”:“4561149”, }, ]
我想在另一个abdv.js
文件中调用此.json文件,并将BID分配给变量数组
var R1;
即R1 = ['4569749', '466759', '4561149']
的值
我怎么能这样做?
.html文件(请注意:我只指定与此quetsion相关的部分并删除其他部分)
代码如下:
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="abdv.js"></script>
<script>
loadABCD();
</script>
abvd.js
代码如下:
function loadABCD()
{
var R1 = [];
$.get('data1.json', function (data) {
var parsedArr = JSON.parse(data),
i = 0, l = parsedArr.length;
for (i; i < l; i++) {
R1.push(parsedArr[i].BID);
}
});
for(k=0;k<R1.length;k++)
{
document.write(R1);
}
// i will use R1 for later processing another function
// for(k=0; k<R1.length; k++)
// {
// obj = loadLevel4Obj(R1[k]);
// scene.add(obj);
// }
}
我还需要帮助将.json文件读入javascript JSON对象。我怀疑我的json文件的格式是否正确。我需要在html文件中指定任何其他与jquery相关的库吗?如何检查BID是否正确存储在变量R1中。
答案 0 :(得分:3)
假设您已将json文件读入javascript JSON对象(您是否也需要帮助?)
var R1 = new Array();
for(var i= 0 ; i< myJSON.length; i++){
R1.push(myJSON[i].BID);
}
[编辑]
你的document.write正在进行任何阅读之前。
删除它。
将一个console.log放在你的$ .get();
的匿名回调中让它看起来像这样:
$.get('data1.json', function (data) {
var parsedArr = JSON.parse(data),
for (i = 0; i < parsedArr.length; i++) {
R1.push(parsedArr[i].BID);
}
for(i=0; i< R1.length; i++)
console.log("item " + i + " = " + R1[i]);
});
此外,如果您的json文件看起来像这样:
[ { "BID" : "4569749", }, { "BID" : "466759", }, { "BID" : "4561149", }, ]
然后需要修复它以删除对象内部的无关逗号。它应该是这样的:
[ { "BID" : "4569749" }, { "BID" : "466759" }, { "BID" : "4561149" } ]
我没有对此进行过测试,但它看起来应该对我有用。
答案 1 :(得分:0)
var R1 = [];
$.get('file.json', function (data) {
var parsedArr = JSON.parse(data),
i = 0, l = parsedArr.length;
for (i; i < l; i++) {
R1.push(parsedArr[i].BID);
}
});
答案 2 :(得分:-1)
获取带有ajax的json文件,然后处理它并分配给R1:
function ajaxGetJson(url, callback){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
callback(eval(xmlhttp.responseText));
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
var R1;
ajaxGetJson('file.json', function(obj){
R1 = obj.map(function(item){ return item.BID });
});
一些意见:
我使用的是eval
而不是JSON.parse
,因为你的.json可能不是严格的 json格式(作为你的例子)
由于问题标记为html5
,您的浏览器肯定支持.map
方法