Что не так с моим запросом ajax? - PullRequest
0 голосов
/ 26 октября 2010
<script type="text/javascript">
var t;
function tick() {
  xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200 && document.getElementById("txtHint").innerHTML!=xmlhttp.responseText) {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  };
  xmlhttp.open("GET","http://ubarskit.com/v/response.php",true);
  xmlhttp.send();
  t=setTimeout("tick()",1000);
}
</script>
</head>
<body onload="tick()"> 
<span id="txtHint"></span>
</body>

Я хочу обновлять текст в теге span из response.php каждую секунду. Работает в Chrome, но не в Firefox или Opera.

Вот файл response.php:

<?php
if(isset($_GET['ropa']))
  {
    $fp = fopen('shout.txt', w);
    fwrite($fp, $_GET['ropa']);
    fclose($fp);
  }
else
  {
    echo file_get_contents('shout.txt');
  }
?>

Ответы [ 2 ]

1 голос
/ 26 октября 2010

Я бы проверил, что вы ожидаете, добавив немного отладочной информации.Если он возвращает статус 0, возможно, у вас проблема с междоменной безопасностью.

<script type="text/javascript">
var t;
function tick() {
  xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function() {
      document.getElementById("debug").innerHTML = "readyState: " + xmlhttp.readyState + "<br />status: " + xmlhttp.status;
      if (xmlhttp.readyState==4 && xmlhttp.status==200 && document.getElementById("txtHint").innerHTML!=xmlhttp.responseText) {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      };
  xmlhttp.open("GET","http://ubarskit.com/v/response.php",true);
  xmlhttp.send();
  t=setTimeout("tick()",1000);
}
</script>
</head>
<body onload="tick()"> 
<span id="debug"></span>
<span id="txtHint"></span>
</body>
0 голосов
/ 26 октября 2010

Вместо того, чтобы делать это, как настоящие мужчины, я использовал jQuery;)

<script type="text/javascript">
function tick() {
$.get('response.php',function(data) {
  $('#txtHint').html(data);
});
}
function submitShout(form){
$.get('response.php',{ ropa: form.elements['ropa'].value});
}
</script>
</head>
<body onload="window.setInterval('tick()',1000)"> 
<span id="txtHint"></span>
<form action="response.php" method="get" onsubmit="submitShout(this); return false;">
  <input type="text" id="ropa" name="ropa">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...