Я пытаюсь получить данные из php-файла с именем return, который просто содержит

<?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. Любые решения?

Спасибо.

2
Aaron Yodaiken 11 Июн 2010 в 07:13

3 ответа

Лучший ответ

Document.ready работает до того, как $ .get вернул сообщение

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

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

Это должно работать нормально

4
Juan Techera 11 Июн 2010 в 03:18

Это не вопрос масштаба, это вопрос порядка событий. $.get - это асинхронный вызов, поэтому он может еще не завершиться к моменту загрузки вашей страницы в браузер (это довольно маленькая страница, поэтому я думаю, что она загружается довольно быстро).

2
R0MANARMY 11 Июн 2010 в 03:19

Аякс, вероятно, еще не загружен.

 var x;

 function showAlert() {alert(x);}

  $(document).ready(function(){
   $.get("return.php", function(data){
    x = data;
    alert(x);
  }); 
 });
2
Moak 11 Июн 2010 в 03:19