javascript - AJAX Javascript 元素未更新

标签 javascript php ajax

我的 Internet Explorer/EDGE 浏览器有问题。基本上,我有一个脚本,可以从远程 XML 文件中提取数据并将其显示在页面中(实时示例:http://www.oldiesplus.com/ - radio 信息部分,页面顶部)

它的工作方式是每 15 秒读取一次 XML 文件并更新歌曲标题(即滚动位)。这在 Google Chrome 中完美运行,在 IE/EDGE 下,但是,脚本执行(请参阅控制台日志)但元素从未更新。

使用 Curl 抓取 XML 文件并将 CURLOPT_FRESH_CONTENT 设置为 true。

问题是,为什么 IE/EDGE 中的元素没有更新为新内容?

这里有一些代码可以提供帮助:

sc_conn.inc (PHP):

$ch             = curl_init($sc_host . '/admin.cgi?mode=viewxml');
    curl_setopt($ch, CURLOPT_PORT, $sc_port);
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD, $sc_admin.':'.$sc_pass);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
    $curl = curl_exec($ch);

shoutcast.js(JavaScript):

function getStreamData() {
        var ajax;
        if (window.XMLHttpRequest) {
                ajax = new XMLHttpRequest();
        } else {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
        }
        ajax.open('GET','/sc_data.php', true);
        ajax.send();
        ajax.onreadystatechange = function() {
                if (ajax.readyState == 4 && ajax.status == 200) {
                        var data = ajax.responseText.split("|");
                        var song = (data[1] == '') ? 'some music.' : data[1];
                        var cta = (player_state == 0) ? '/new/img/play.png' : '/new/img/pause.png';
                        if (data[2]) {
                                document.getElementById('radio-info').innerHTML = '<h2>'+data[2]+'</h2>';
                                document.getElementById('radio-info').innerHTML += '<p><span class="dj_name">'+data[0]+' is playing</span> '+song+'</p>';
                        }else{
                                document.getElementById('radio-info').innerHTML = '<p><span class="dj_name">'+data[0]+' is playing</span> '+song+'</p>';
                        }
                        document.getElementById('tunein').src = cta;
                        console.log("Title Updated!");
                }
        }
}

最佳答案

解决方案是规避 AJAX 请求的缓存 - 使用以下方法在 PHP 脚本调用的末尾附加一个随机数:

Math.random();

关于javascript - AJAX Javascript 元素未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491038/

相关文章:

javascript - 在 JavaScript 中嵌套数组

javascript - 用于处理 WordPress 短代码的正则表达式

javascript - 如何使用 ES5 为每个图像添加事件

javascript - 使用 GET 请求动态填充表

javascript - 使用 dojo.xhrget() 方法在 Dojogrid 中显示数据

javascript - jquery stop() 无法正常工作

javascript - 将 json 编码的数组传递给 jQuery

PHP 和 MySQL 在哪里和

php - 如果使用中文字符,为什么 php md5() 总是与 python 的 hash.md5() 不同?

php - 搜索邮政编码可以在线但不能离线(从本地数据库)