Javascript 函数不向其他函数返回值
尝试编写从文本文件读取数据的函数。该函数工作正常,但我想在其他函数中读取其数据。有人能帮我告诉我如何将y的值返回到read()函数吗Javascript 函数不向其他函数返回值,javascript,jquery,ajax,html,Javascript,Jquery,Ajax,Html,尝试编写从文本文件读取数据的函数。该函数工作正常,但我想在其他函数中读取其数据。有人能帮我告诉我如何将y的值返回到read()函数吗 函数read(){ $.get(“version.txt?\u ts=“+new Date().getTime(),函数(数据){ var y1=parseInt(数据[0]); var y2=parseInt(数据[1]); 变量y=(y1*10)+y2; 返回y; }); } 函数drr(){ var d=read(); 文件编写(d); } 不起作用 这样
函数read(){
$.get(“version.txt?\u ts=“+new Date().getTime(),函数(数据){
var y1=parseInt(数据[0]);
var y2=parseInt(数据[1]);
变量y=(y1*10)+y2;
返回y;
});
}
函数drr(){
var d=read();
文件编写(d);
}
不起作用
这样做:
function read()
{
$.get("version.txt?_ts=" + new Date().getTime(), function(data) {
var y1= parseInt(data[0]);
var y2= parseInt(data[1]);
var y= (y1*10)+y2;
document.write(y); /* this is the change, process the result when it's received here */
});
}
function drr()
{
read();
}
还要将html更改为更合适的语法
<body unload="read();">
通常,当您有$.ajax()调用时,它是异步的——当请求成功处理时,发出请求并执行成功处理程序
因此,如果您使用ajax()调用的返回值,它不是从服务器收到的响应,而是一个请求对象。$。get是异步函数,不返回read函数,您需要使用callback:
function read(callback) {
$.get("version.txt?_ts=" + new Date().getTime(), function(data) {
var y1 = parseInt(data[0]);
var y2 = parseInt(data[1]);
var y = (y1 * 10) + y2;
callback(y);
});
}
function drr() {
read(function(txt) {
document.write(txt);
});
}
在代码中,您通过JQuery使用AJAX:
$.get(url, callback)
$get
方法点击url
并将结果传递给回调方法,但不返回结果。由于AJAX是异步的,回调
不会立即被调用,而是会发生如下情况:
$.get
read
方法继续(在您的情况下会退出,因为没有其他代码)$.get
从服务器接收响应回调
函数读取方法退出时与数据处理发生时之间没有关系。因此,如果您需要对结果执行某些操作(在页面上显示),那么您应该在回调
方法中执行此操作
下面是一个已编辑的示例,其中包含您的代码:
function read() {
$.get("version.txt?_ts=" + new Date().getTime(), function(data) {
var y1 = parseInt(data[0]);
var y2 = parseInt(data[1]);
var y = (y1*10)+y2;
document.write(y);
});
}
除了AJAX的异步特性之外,您的代码还有另一个问题。在read
方法中,您希望返回一个值,但实际上它不返回任何内容。这使得drr
功能无效 试试这个
function read() {
var result=0;
$.get("version.txt?_ts=" + new Date().getTime(), function (data) {
var y1 = parseInt(data[0]);
var y2 = parseInt(data[1]);
var y = (y1 * 10) + y2;
result=y;
});
return result;
}
function drr() {
var d = read();
document.write(d);
}
可能重复的Please read Simply put无法从ajax请求返回值。。。您需要使用回调。。。阅读上面的链接,看看它是如何实现的。有没有办法将txt值输出到drr()函数?我必须用这个值来画一张图如果你愿意的话你可以把txt赋值给某个全局变量,但是在它被设置成一个值之前你不能用这个,对吗?因此,要绘制图形,只需调用draw函数而不是document.write(txt);实际上,为了绘制图形,我想通过在循环中调用该函数来更新值。因此,如果有可能定期调用函数并获得新值,我可以绘制图表。但我对此感到困惑,结果值没有更新。它的打印0使用带有async:false和cache:false选项的$.ajax。由于get在默认情况下是异步的,因此它在调用success函数之前返回。
function read() {
var result=0;
$.get("version.txt?_ts=" + new Date().getTime(), function (data) {
var y1 = parseInt(data[0]);
var y2 = parseInt(data[1]);
var y = (y1 * 10) + y2;
result=y;
});
return result;
}
function drr() {
var d = read();
document.write(d);
}