Here is a demo简而言之:
如果有人点击更改文本next()
将触发功能。
next()
函数将相关数据发送到ajax_next_track.php并检索随机数据。
然后用随机数据替换artist_name
和track_name
跨度中的文字。
这些都适用于Firefox和Chrome。但是,它不在Internet Explorer中。如果您使用不同的浏览器单击更改文本两次以上,则可以看到问题。
在其他浏览器中,屏幕上会有一个“加载...”文本的操作时间;但它在Internet Explorer中没有操作时间立即发生。
函数next()无法将数据发送到ajax文件。
那么,我该如何解决呢?
谢谢你的到来。
function next(tags)
{
var hr = new XMLHttpRequest();
var url = 'ajax_next_track.php?tags=' + tags;
hr.open("GET", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function()
{
if(hr.readyState == 4 && hr.status == 200)
{
var return_data = hr.responseText;
jsonObj = JSON.parse(return_data);
document.getElementById("artist_name").innerHTML = jsonObj.artist_name;
document.getElementById("track_name").innerHTML = jsonObj.track_name;
document.getElementById("name").title = 'play '+jsonObj.artist_name+' - '+jsonObj.track_name+' radio';
else
{
}
}
document.getElementById("track_name").innerHTML = 'loading...';
document.getElementById("artist_name").innerHTML = '';
hr.send(null);
}
<div id="player">
<div id="playPauseOutDiv" onclick="pause();">
</div>
<div id="artist_track">
<span id="artist_name">gerry rafferty</span>
<span id="track_name">baker street</span>
</div>
</a>
<div id="ikinciSatir">
<a id="changeSong" title="Shuffle" href="javascript:void(0);" onclick="next('3871');">Change</a>
</div>
</div>
答案 0 :(得分:4)
我在2天前碰到了同样的问题。我正在使用IE8,后来的ajax调用并没有真正发生,但IE8尝试使用缓存。
我在ajax文档页面上找到了这个
默认情况下,始终会发出请求,但浏览器可能会在其cache
之外提供结果。要禁止使用缓存的结果,请将cache
设置为false
。要在自上次请求后资产未被修改时导致请求报告失败,请将ifModified设置为true。
尝试它是否有帮助。这是文档http://api.jquery.com/jQuery.ajax/
答案 1 :(得分:3)
由于某种原因,IE缓存了JSON文件并且在第一个之后每次获得304 Not Modified响应而不是200 OK。
不需要更改服务器端设置的最简单的解决方法是在每个请求上向请求的URL添加一些随机参数,例如
var url = 'ajax_next_track.php?tags=' + tags + '&nocache=' + Math.random();
答案 2 :(得分:2)
IE调试器中的错误显示line 40 document.getElementById("name") is null or not an object.
我在你的html中看到名为“artist_name”和“track_name”的跨区,但没有“名称”。