使用JQuery从JSON文件返回数组
Return array from JSON file with JQuery?
我有一个JSON文件,其中包含以下内容:[{名称:乔,编号:4},{姓名:拉尔夫,编号:76}]
简单地说,我试图创建一个函数,将其作为数组返回:
function createArray(){
x = $.getJSON("/names.json", function(json) {
var myArray = [];
$.each(json, function() {
myArray.push(json);
});
return myArray;
});
return x;
}
这不起作用,我不确定它的哪一部分没有意义
您正在执行一个异步请求。$。getJSON不会返回回调的结果。
您需要将回调传递到createArray
函数中。此外,如果JSON数据已经是一个数组,则不需要处理响应数据。
function createArray(cb){
$.getJSON("/names.json", cb);
}
例如,你可以改变这个:
var myArray = createArray();
// Process myArray
进入这个:
createArray(function(myArray) {
// Process myArray
});
问题是,你不能只分配网络请求的结果。当您调用getJSON时,您启动了一个网络请求,但在请求启动后,JS将继续运行其他东西。要获得异步请求的结果,您需要使用一个回调来处理该数据并对其进行处理。
正如loganofsmisth所说,您没有考虑$.getJSON是异步的,它不会返回您认为的内容(它实际上返回了一个jqXHR对象。编写代码以使用闭包处理异步性质:
function createArray(cb){
$.getJSON("/names.json", function(json) {
var myArray = [];
$.each(json, function() {
myArray.push(json);
});
cb(myArray);
});
}
createArray(function(array) {
//your array is available here
console.log(array);
}
您的键和值应该是Strings
[{"name":"joe", "number":4},{"name":"ralph", "number":76}]
和这个
$.each(json, function() {
myArray.push(json);
});
应该成为
$.each(json, function(key, val) {
if(myArray[key] == undefined)
{ myArray[key] = new Array();
}
myArray[key].push(val);
});
从'json'得到的是一个数组。试试这个,
var ar = [{
"name": "joe",
"number": "4"},
{
"name": "ralph",
"number": "76" }];
alert(ar[0].name);
这会提醒"乔"这个名字。ar[0]
是数组的第一个元素,在您的情况下,这是一个具有属性name
和number
的对象。你可以用正常的方式获取/设置它们。
var myArray = [];
$.getJSON("/names.json", function(json) {
myarray=json;
});
现在myArray
是一个包含对象的数组。
如果不能这样做,函数将返回promise对象,但不会返回json响应本身。只有在请求完成后,promise才会提供响应(因为请求是异步的,所以不是在函数返回之后立即提供)。
为什么不直接使用回调中的json呢?我的意思是:
function createArray(){
$.getJSON("/names.json", function(json) {
// Whatever you need to do with your json,
// do it here. This code will run after
// createArray returns. And you can't
// return anything from here, it's useless.
// Actually, you don't even need the outer
// createArray function.
});
}
相关文章:
- Regex提取URL返回数组的一部分;未定义”;
- 为循环嵌套的Javascript未按预期返回数组
- 从函数中的函数返回数组时出错
- JSON返回数组的奇怪结果
- 如何从NodeJS中的模块返回数组
- 在JS中返回数组的大整数运算
- 从Nodejs中的函数返回数组,并将其发送到ejs视图
- 从函数返回数组
- undercore返回数组中对象的indes,其中单词存在于对象中的句子中
- Yui Get 复选框返回数组而不是布尔值
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- JavaScript闭包和返回数组元素
- 按流星空格键模板中的索引返回数组项
- 从多个文件中推送文本的函数(使用html5文件读取器上传)返回数组
- 我想返回数组
- PHP和Ajax在回调和返回数组中使用foreach循环
- Javascript-如何通过以字符串作为参数返回数组
- 从JSON调用SQL返回数组时出现问题
- Jasmine spyOn使用伪造的返回数组测试功能
- 无法从从sql数据库读取的javascript函数中获取返回数组