我正在尝试创建一个可以在线运行的小型 RadioPlayer。现在这是我拥有的 JavaScript 代码
function changeLink(link)
{
/* this changes the link and plays the radio*/
var radio= document.getElementById("radio");
radio.src = link;
radio.play();
}
function jsonLoad()
{
var xmlhttp = new XMLHttpRequest();
var url = "playList.txt";
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var myArr = JSON.parse(xmlhttp.responseText);
readJSON(myArr);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function readJSON(obj)
{
var list = "<ui>";
for (var i = 0; i < obj.length ; i++)
{
list += "<li><a href='javascript:changeLink(" +"\"" + obj[i].radioLink + "\"" +");'>" + obj[i].name + "</a></li>";
}
list += "</ui>";
document.getElementById("radioLoad").innerHTML = list;
}
另外这是 HTML 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title> My Radio Player</title>
<script src="Script.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body onload="jsonLoad()">
<p>This is the link that i will change his property</p>
<audio id="radio" src="#" controls autoplay preload="auto" ></audio>
</audio>
<br>
<p id="radioLoad">
</p>
</body>
问题是 JSON 文件在本地运行良好,网页显示如我所料。但是,当我将它放在服务器上时,就像未加载 JSON 文件并且未触发其他功能 (readJSON(myArr);) 一样。似乎 IF 条件有问题,但我不知道为什么。有人可以帮助我吗?
编辑:似乎该代码只能在 Google Chrome 中本地运行。在 Internet Explorer 中生成了链接,但当我单击它们时它们不播放 radio 。同样在我测试的 iphone 模拟器上,音频标签无法正常工作。我也会尝试不同的网络浏览器。
EDIT2:现在可以使用了。我设法弄清楚了这个问题。代码没有问题,问题出在我托管的服务器上。所以我更改了网络托管服务商,现在可以使用了。你可以在这里看到它: http://radioplay4all.16mb.com/
还是谢谢你:)
最佳答案
如果不亲自调试,我无法确定,但我很确定您的问题出在您的 readJSON()
中。函数,当您尝试获取 .length
时对象的属性(JSON.parse() 返回一个 javascript 对象),因为对象没有 .length
属性(property)。要查找对象具有的键数,您可以使用 Object.keys(myArr).length
.所以在你的 for 循环中,obj.length
为 Null,所以 i
不能小于Null,所以不执行。所以如果你替换 i < obj.length
与 i < Object.keys(obj).length
这应该可以解决问题。
关于javascript - 在本地加载正常但在我发布时加载不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423910/