在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删除了线数据:数据和