我试图从函数中获取变量。此函数包含一个$.get()
函数。这是代码:
$(function () {
var valiable = '';
function functionName(string) {
var file = "lang.txt";
$.get(file, function (txt) {
var lines = txt.split("\n");
for (var i = 0, len = lines.length; i < len; i++) {
if ($.trim(lines[i]) == string) {
valiable = lines[i];
}
}
});
return valiable;
}
$('#button').on('click',function () {
var variable = functionName(string);
console.log(variable);
});
});
我试图解析.txt
文件以获取其内容。
答案 0 :(得分:0)
$.get()
是异步的,因此您可以将内容保存到其成功处理程序中的输出变量中。然后,只需从按钮单击处理程序访问此存储的值。在这种情况下,您将执行页面的功能加载。这有一个缺点,即单击按钮时数据无法准备就绪,您还需要重新加载页面以再次获取数据。
$(function () {
var output = '';
function functionName() {
var file = "lang.txt";
$.get(file, function(txt) {
var lines = txt.split("\n");
output = lines.join("");
});
}
functionName();
$('#button').on('click', function () {
console.log(output);
});
});
如果要在单击按钮时执行文件加载,可以将成功处理函数(回调)作为参数传递。然后successHandler函数与数据有一个参数,并在执行$.get()
后调用。因此,您可以在按钮单击侦听器中定义加载数据应该发生什么。
$(function () {
function functionName(successHandler) {
var file = "lang.txt";
$.get(file, function(txt) {
var lines = txt.split("\n");
var output = lines.join("");
successHandler(output);
});
}
$('#button').on('click', function() {
functionName(function(data) {
console.log("this is the data: " + data);
});
});
});
答案 1 :(得分:0)
该调用是async
,您无法从该ajax调用中足够快地返回值。您应该做的是为您的方法添加callback
function fn(callback) {
var value;
$.get('lang.txt', function(data) {
...
callback(value)
});
}
现在您可以将回调附加到方法
fn(function(value) {
console.log(value);
});