从PHP echo获取文本并使用AJAX更新DIV

时间:2017-10-12 13:56:20

标签: javascript php ajax

我正在学习HTML,PHP,AJAX和jQuery。在练习中,我需要每隔3秒刷新一个DIV容器,而不需要为整个页面充电。

我必须使用AJAX进行刷新,并且响应需要是使用PHP在服务器中生成的随机数。

我有这个:

的index.php

<div id="contador">NEED TO OVERWRITE THIS TEXT</div>

number.php

<?php
    echo "Number: " . rand(1,100);
?>

ajaxreload.js

function update() {
  $("#contador").load('Loading...'); 
  $.ajax({
    type: 'GET',
    url: 'number.php',
    timeout: 3000,
    success: function(data) {
      $("#contador").html(data);
      $("#contador").html(''); 
      window.setTimeout(update, 3000);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      $("#contador").html('Timeout...');
      window.setTimeout(update, 3000);
    }
});
}
$(document).ready(function() {
    update();
});

DIV每3秒更新一次,但它没有从number.php获得回应响应。我收到一个非常快的“正在加载...”消息,然后是“超时......”。怎么了?我需要使用另一种东西而不是回声?另一种类型或URL数据?另一个AJAX函数?

谢谢!

已解决:谢谢!解决方案在控制台:)问题是我的index.php文件在根目录中,number.php和ajaxreload.js在“scripts”文件夹中。参数url:'number.php'尝试从div位置(其中index.php是)加载它而不是脚本文件调用的位置

谢谢@ dan08 @Keith Chason 这是我第一次使用控制台

1 个答案:

答案 0 :(得分:3)

我现在没有一个可以测试这个问题的环境,但我怀疑window.setTimeout(update, 3000);并不是你的意思。

timeout函数的$.ajax参数是请求的允许时间量,而不是它运行的时间间隔。

http://www.tutorialsteacher.com/jquery/jquery-ajax-method

如果您尝试每3秒加载一次,我会在Javascript中使用setInterval功能:

https://www.w3schools.com/jsref/met_win_setinterval.asp

function update() {
  $("#contador").load('Loading...'); 
  $.ajax({
    type: 'GET',
    url: 'number.php',
    success: function(data) {
      $("#contador").html(data);
      //$("#contador").html(''); This clears your <div>
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      $("#contador").html('Timeout...');
      console.log('TextStatus: '+textStatus);
      console.log('ErrorThrown: ' + errorThrown);
    }
});
}
$(document).ready(function() {
    setInterval(update, 3000);
});