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);
    });