Jquery$.get方法不起作用 无功电流时间; 函数getDateInfo(){ $.get(“time.php?a=“+Math.random(),函数(数据){ 返回数据; }); } currenttime=getDateInfo(); 警报(当前时间); /**************php文件包含以下代码************/
您好,朋友们,请帮助解释此代码不起作用的原因。此Jquery$.get方法不起作用 无功电流时间; 函数getDateInfo(){ $.get(“time.php?a=“+Math.random(),函数(数据){ 返回数据; }); } currenttime=getDateInfo(); 警报(当前时间); /**************php文件包含以下代码************/,php,javascript,jquery,get,Php,Javascript,Jquery,Get,您好,朋友们,请帮助解释此代码不起作用的原因。此get调用是异步的。它请求浏览器启动远程请求后,会立即返回到代码。然后,您的代码会显示一个警报,而不必等待请求完成——因此当时当然还没有结果 这就是函数接受回调参数而不是返回结果的原因。您的回调将在getDateInfo()返回后很长时间内运行,并且您必须安排一些事情,以便依赖于答案的操作由回调函数而不是调用$的代码启动。get您正在尝试将数据返回到匿名函数。必须在$.get操作的回调中设置当前时间 <html> <h
get
调用是异步的。它请求浏览器启动远程请求后,会立即返回到代码。然后,您的代码会显示一个警报,而不必等待请求完成——因此当时当然还没有结果
这就是函数接受回调参数而不是返回结果的原因。您的回调将在
getDateInfo()
返回后很长时间内运行,并且您必须安排一些事情,以便依赖于答案的操作由回调函数而不是调用$的代码启动。get
您正在尝试将数据返回到匿名函数。必须在$.get操作的回调中设置当前时间
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script type="text/javascript">
var currenttime;
function getDateInfo() {
$.get("time.php?a=" + Math.random() , function(data) {
return data;
});
}
currenttime = getDateInfo();
alert(currenttime);
</script>
</body>
</html>
/**************file time.php contains following code************/
<?php
echo "August 27, 2011 19:30:52";
?>
你想干什么?你收到了什么错误?这不是它的工作原理。对下层选民来说:是的,OP本来可以问得更好;但是如果你花点时间阅读代码,问题是什么就很清楚了——顺便说一句,这是一个有趣的问题。@Majidouladpour现在存在的问题不太可能在将来帮助任何人。想编辑吗?你确定吗?我替换了
警报(currenttime)代码>设置超时(“警报(当前时间);”,3000)代码>和ajax调用需要50到100毫秒(因此在结果到达后会触发警报),但警报仍会发出未定义的。为什么?那是因为结果从未存储在currenttime
中。在currenttime
中存储的是来自getDateInfo
的结果值,该值未定义,因为它没有return
语句。回调函数中的return
返回服务器对jQuery中调用回调的代码的回复——这是没有意义的,因为该代码根本不期望回调返回任何值。啊,我明白了!基于(清晰的)解释,我进一步将函数代码更改为var t=$.get(“time.php?a=“+Math.random(),function(data){return data;});返回t
,期望更改会使警报立即生效,但仍然有问题,因为现在它显示[object object]
(在Firefox中)。这不会有帮助,因为您仍然希望在不等待回调执行的情况下发生事情。我甚至不知道$.get
返回什么,但它肯定与服务器的回复无关,因为$.get
在服务器回复之前返回。除了在回调中或回调调用的代码中,您无法使回复显示在任何位置。已确认!$get
函数返回对XMLHttpRequest
对象的引用。我再次将警报部分更改为setTimeout(“警报(currenttime.responseText);”,3000)代码>并可以获取警报显示的日期。但正如您正确指出的,responseText在执行赋值行之后到达-但由于我们正在存储对对象的引用,在触发警报时,请求已完成,并且已获取responseText:
var currentTime;
$.get("time.php?a=" + Math.random() ,
function(data) { // this will execute when the server request is complete & successful.
currentTime = data;
alert(currentTime);
});