在Javascript函数中编写jQuery不起作用
我有一个名为在Javascript函数中编写jQuery不起作用,javascript,jquery,html,ag-grid,Javascript,Jquery,Html,Ag Grid,我有一个名为example.js的js文件,它有一行代码如下: gridOptions.api.setRowData(createRowData()); function createRowData() { jQuery.getJSON('/file.txt',function(ROW_DATA){ return ROW_DATA; }); } 然后还有另一个文件data.js,该文件具有createRowData()函数,该函数应返回ROW\u data。详情
example.js
的js文件,它有一行代码如下:
gridOptions.api.setRowData(createRowData());
function createRowData() {
jQuery.getJSON('/file.txt',function(ROW_DATA){
return ROW_DATA;
});
}
然后还有另一个文件data.js
,该文件具有createRowData()
函数,该函数应返回ROW\u data
。详情如下:
gridOptions.api.setRowData(createRowData());
function createRowData() {
jQuery.getJSON('/file.txt',function(ROW_DATA){
return ROW_DATA;
});
}
但是,无论何时从
example.js
文件调用此createRowData()
函数,它都不会进入jQuery
块中,而只是进入最后一个花括号。有人能告诉我这里出了什么问题吗?从文件中获取JSON,将结果传递给回调函数,然后返回。把它还给哪里
正如我所说,您的匿名函数是一个回调函数
程序说:当你从文件中读取完毕后,调用这个函数,好吗?。
当你这么做的时候,我在做别的事情
这就是它所做的。程序将继续运行,直到文件被读取,此时将调用回调匿名函数。
你可以做这样的事
createRowData(gridOptions.api);
// add code here if you want this code to execute even before you get the response
function createRowData(api) {
jQuery.getJSON('/file.txt',function(ROW_DATA,api){
api.setRowData(ROW_DATA);
//Whatever else you want to do. In case you want this to be done only
//after the values have been read
});
}
如果要等待文件被读取,只需在函数之后不做任何操作,而是将其放入回调函数。从文件中获取JSON,将结果传递给回调函数,然后返回。把它还给哪里 正如我所说,您的匿名函数是一个回调函数 程序说:当你从文件中读取完毕后,调用这个函数,好吗?。 当你这么做的时候,我在做别的事情 这就是它所做的。程序将继续运行,直到文件被读取,此时将调用回调匿名函数。 你可以这样做
createRowData(gridOptions.api);
// add code here if you want this code to execute even before you get the response
function createRowData(api) {
jQuery.getJSON('/file.txt',function(ROW_DATA,api){
api.setRowData(ROW_DATA);
//Whatever else you want to do. In case you want this to be done only
//after the values have been read
});
}
如果您想等待文件被读取,只需在函数之后不做任何操作,而是将其放在回调函数中。我相信您没有得到值,因为getJSON是异步的,正如其他人所说。createRowData将在以后而不是调用时检索该值 下面是一种通过承诺获取数据的方法。我评论了下面发生的事情:
function createRowData() {
//return a new promise
return new Promise(function(resolve, reject){
jQuery.getJSON('/file.txt',function(ROW_DATA){
//on reject, send an error
if (ROW_DATA === null) reject("Error fetching data");
//on resolve, send the row data
return resolve(ROW_DATA);
});
});
}
//use then to describe what happens after the ajax request is done
gridOptions.api.setRowData(createRowData()).then(function(rowdata){
return rowdata; //log data or error
})
编辑:要执行一个同步ajax请求,您可能可以执行类似的操作,参考下面的内容
要将一些数据读取到您提到的变量中,nodejs可能会有所帮助,因为它可以处理读取输入/输出,可能还可以读取到变量。我认为您没有获得值,因为getJSON是异步的,正如其他人所说的那样。createRowData将在以后而不是调用时检索该值 下面是一种通过承诺获取数据的方法。我评论了下面发生的事情:
function createRowData() {
//return a new promise
return new Promise(function(resolve, reject){
jQuery.getJSON('/file.txt',function(ROW_DATA){
//on reject, send an error
if (ROW_DATA === null) reject("Error fetching data");
//on resolve, send the row data
return resolve(ROW_DATA);
});
});
}
//use then to describe what happens after the ajax request is done
gridOptions.api.setRowData(createRowData()).then(function(rowdata){
return rowdata; //log data or error
})
编辑:要执行一个同步ajax请求,您可能可以执行类似的操作,参考下面的内容
要将一些数据读取到您提到的变量中,nodejs可能会有所帮助,因为它可以处理输入/输出的读取,也可能会读取到变量。jQuery.getJSON是异步的。当您说“它不在jQuery块中,只是到达最后一个花括号”是什么意思?在
setRowData
之前,我会尝试exec
ajax调用getJSON
。。在某种程度上,首先获取数据,然后将其填入网格:)@Dream\u Cap,即它不进入以执行语句return ROW\u data;如何返回这个值?我不知道这个代码示例的目的是什么,但从目前的情况来看,我看到了一些困难。gridOptions.api.setRowData(createRowData())代码>语句似乎使用了createRowData()
函数的结果。但是,作为一个Ajax调用,还不会有结果,您将得到的只是未定义的,因为函数本身不会返回任何内容。如果你什么也得不到,那正是你所要求的。jQuery.getJSON是异步的。当你说“它没有进入jQuery块,只是进入最后一个花括号”时,你是什么意思?我会在setRowData
之前尝试exec
ajax调用getJSON
。。在某种程度上,首先获取数据,然后将其填入网格:)@Dream\u Cap,即它不进入以执行语句return ROW\u data;如何返回这个值?我不知道这个代码示例的目的是什么,但从目前的情况来看,我看到了一些困难。gridOptions.api.setRowData(createRowData())代码>语句似乎使用了createRowData()
函数的结果。但是,作为一个Ajax调用,还不会有结果,您将得到的只是未定义的,因为函数本身不会返回任何内容。如果你什么也得不到,那正是你所要求的。有没有办法不用异步jQuery或Ajax从文件中获取数据?我不希望程序继续运行,直到文件没有完全读取到变量,然后返回变量。有没有办法在没有异步jQuery或Ajax的情况下从文件中获取数据?我不希望程序继续运行,直到文件没有完全读取到一个变量,然后返回变量。谢谢,但这也是异步的,我在其他行中没有定义,进一步使用结果。有没有办法将文件同步读取到javascript变量中?我得到了UncaughtReferenceError:数据未定义。在线数据:数据:OI删除了线数据:数据,错误消失。因此,我到达了return rowdata行,在开发者工具中悬停在它上面时,我也可以看到数据,但它仍然从函数createRowData()返回数据,也就是说,如果我尝试在调用createRowData()函数的地方对该数据进行console.log,它会给出“undefined”Hmm,我现在也很困惑。我删除了data:data.thanking,但这也是异步的,我在进一步使用结果的其他行中没有定义。有没有办法将文件同步读取到javascript变量中?我得到了UncaughtReferenceError:数据未定义。在线数据:数据:OI删除了线数据:数据和