我正在尝试使用外部脚本文件中的$ .get()函数从我的服务器上的文本文件加载数据。我的代码如下:
/*
* Load sample date
*/
var stringData;
$.get("http://localhost/webpath/graphing/sample_data.txt", function(data){
stringData = data;
//alert("Data Loaded: " + stringData);
});
//Split values of string data
var stringArray = stringData.split(",");
alert("Data Loaded: " + stringData);
当我进入$ .get()函数时,我可以看到stringData var得到很好的人选,并且对alert的调用确认它包含来自示例文本文件的数据。但是,当我离开$ .get()函数时,stringData var不再显示。我不太了解该函数如何工作以了解它为什么没有像我预期的那样做。我想要它做的就是将文本数据加载到变量中,以便我可以使用它。任何帮助表示赞赏。
答案 0 :(得分:16)
get是异步的意思是它调用服务器并继续执行其余的代码。这就是你有回调方法的原因。无论你打算如何处理返回数据,都要在回调方法(你已经发出警报)中进行。
get,post都是异步的。您可以使用
进行同步通话在代码中的任意位置使用$.ajaxSetup({ async: false });
。这会影响代码中的所有ajax调用,所以要小心。
$.ajax
与async: false
一样如下所示。
请查看上面提到的代码和API文档链接以解决您的问题。
/*
* Load sample date
*/
var stringData = $.ajax({
url: "http://localhost/webpath/graphing/sample_data.txt",
async: false
}).responseText;
//Split values of string data
var stringArray = stringData.split(",");
alert("Data Loaded: " + stringData);
答案 1 :(得分:5)
$ .get函数是异步的。您需要对回调函数中返回的数据执行任何操作。您可以将该函数移动到不内联以清理代码。
function parseData(data){
//do something with the data
alert("data is: " + data);
}
$.get("http://localhost/webpath/graphing/sample_data.txt",parseData);