<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";
?>
朋友您好,请帮忙解释为什么这段代码不起作用..
答案 0 :(得分:2)
get
调用是异步的。一旦请求浏览器启动远程请求,它就会返回到您的代码。然后,您的代码会在不等待请求完成的情况下显示警报 - 因此当时还没有结果。
这就是函数采用回调参数而不是仅返回结果的原因。您的回调将在getDateInfo()
返回后很长时间内运行,并且您必须安排一些事情,使得依赖于答案的操作由回调函数启动,而不是通过调用{{ 1}}。
答案 1 :(得分:0)
您正在尝试将数据返回到匿名函数。您必须在$ .get操作的回调中设置当前时间。
var currentTime;
$.get("time.php?a=" + Math.random() ,
function(data) { // this will execute when the server request is complete & successful.
currentTime = data;
alert(currentTime);
});