带变量的jquery noob问题(范围?)

时间:2010-06-11 03:13:49

标签: javascript html jquery

我正在尝试从名为return的php文件中检索数据,该文件只包含

<?php
echo 'here is a string';
?> 

我是通过包含

的html文件来完成的
<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script> 
  var x;
  $.get("return.php", function(data){
   x = data;
 }) 
 function showAlert() {alert(x);}

  $(document).ready(function(){
   alert(x);
 });
  </script>
</head>
<body>
  <input type = "button" value = "Click here" onClick="showAlert();">
</body>

</html>

单击该按钮时,它会检索并显示代码,但在$(document).ready事物上,它会显示“undefined”而不是return.php中的数据。任何解决方案?

感谢。

3 个答案:

答案 0 :(得分:4)

document.ready在$ .get返回msg之前运行

var x;
function showAlert() {alert(x);}

$(document).ready(function(){
   $.get("return.php", function(data){
      x = data;
      showAlert();
   }) 
});

应该可以正常工作

答案 1 :(得分:2)

ajax可能尚未加载。

 var x;

 function showAlert() {alert(x);}

  $(document).ready(function(){
   $.get("return.php", function(data){
    x = data;
    alert(x);
  }); 
 });

答案 2 :(得分:2)

这不是范围问题,而是事件顺序问题。 $.get是一个异步调用,所以当你的页面在浏览器中加载时它可能还没有完成(它是一个相当小的页面,所以我想它加载得很快)。