Jquery get():如何为以后的变量使用数据?
我对Ajax还是相当陌生的,所以请容忍我 我正在使用Jquery get():如何为以后的变量使用数据?,jquery,ajax,get,Jquery,Ajax,Get,我对Ajax还是相当陌生的,所以请容忍我 我正在使用$.get()从服务器检索和读取文本文件。我需要将数据存储在范围外的变量中,以便以后使用 function some_func() { var ex_var = "A"; $.get("test.txt", function(data) { ex_var = data; console.log(ex_var); // Works }); console.log(ex_var);
$.get()
从服务器检索和读取文本文件。我需要将数据存储在范围外的变量中,以便以后使用
function some_func() {
var ex_var = "A";
$.get("test.txt", function(data) {
ex_var = data;
console.log(ex_var); // Works
});
console.log(ex_var); // Does not work
}
通过阅读,我明白了为什么超出范围是不起作用的。然而,这似乎意味着我需要在$.get()
本身的回调中做所有事情,这似乎不太吸引人。有没有更好的方法来存储$.get()
中的数据以便以后使用?Ajax调用$.get()
是异步的(这就是“Ajax”中“A”的意思)。因此,调用$.get()
只会启动请求远程资源的过程。然后,其余的代码继续执行,包括直接在$.get()
调用之后的代码(这就是位于那里的控制台.log()
无法工作的原因)。然后,一段时间后,来自ajax请求的网络调用完成,远程资源可用。此时,将调用$.get()
的完成回调函数,并且您的数据可用
使用ajax调用结果的所有代码都应该在该完成处理程序中,或者应该从完成处理程序中调用。使用异步ajax调用时不能编写同步代码。在使用异步函数时,必须采用一种新的思维方式
function some_func() {
$.get("test.txt", function(data) {
console.log(data); // Works
// call some function and pass it the results of the ajax call
// this is how you continue your code logic
// using the results of the ajax call
callSomeFunction(data);
});
}
您不想尝试将数据放入全局变量中,因为您永远不会获得正确的时间。来自ajax调用的数据在将来的不确定时间返回。当数据实际返回时,您应该使用完成处理程序中的数据,这样您就不必担心时间问题。是否使用全局变量,这是您的选择,全局变量是不好的,如果您不知道为什么,您需要阅读更多。因此,我就如何“以后使用数据”的具体问题向您提供了帮助,换句话说: 如何从函数范围外的XHR分配结果? 简单,只需分配它
<script>
function some_func() {
var ex_var = "A";
$.get("test.txt", function(data) {
ex_var = data;
console.log(ex_var); // Works
}).done(function() {
console.log(ex_var); // Does not work <-- will work now
});
}
</script>
函数some_func(){
var ex_var=“A”;
$.get(“test.txt”,函数(数据){
ex_var=数据;
console.log(ex_var);//有效
}).done(函数(){
console.log(ex_var);//不起作用您不能这样做,因为$.get()is asynchronousget is async request,意味着它不会等待请求完成。最好使用Promissions。或者使用jquery ajax和async应该是错误的。您可以在全局范围内声明一个变量,并将来自ajax的数据的值分配给该变量,然后在ajax完成后的其他调用中使用它。但正如我所说,这意味着将$.get()设置为“main()”,而不是用于其他函数似乎更合适。我只是想知道是否有更多的“better”因为在回调中抛出程序的所有子例程似乎很奇怪。@user3064776-异步编程就是这样工作的。它使用回调。如果你把$.get()
在另一个函数中,您只需向另一个函数传递一个回调函数,该函数在数据可用时将被调用。习惯它。异步编程就是这样工作的,period。异步编程有不同的风格,如Promission(如果您喜欢),但您仍然会遇到相同的基本问题。您的代码必须在回调中的Ajax调用之后继续。