首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在本地正常加载,但在发布时不正确

在本地正常加载,但在发布时不正确
EN

Stack Overflow用户
提问于 2015-05-24 21:14:24
回答 1查看 58关注 0票数 1

我正在尝试创建一个在线工作的小RadioPlayer。这是我拥有的JavaScript代码

代码语言:javascript
代码运行次数:0
运行
复制
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代码:

代码语言:javascript
代码运行次数:0
运行
复制
<!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中,链接是生成的,但当我点击它们时,它们不会播放广播。同样在我测试的iphone模拟器上,音频标签也不能正常工作。我也会在不同的浏览器上尝试。

EDIT2:它现在可以工作了。我设法弄清楚了这个问题。这不是代码有问题,而是我托管的服务器有问题。因此,我更改了网络主机,现在它可以工作了。你可以在这里看到:http://radioplay4all.16mb.com/

无论如何,还是要感谢您:)

EN

回答 1

Stack Overflow用户

发布于 2015-05-24 21:42:36

如果不亲自调试,我不能确定,但我非常确定当您尝试获取对象的.length属性(JSON.parse()返回一个javascript对象)时,您的问题出在readJSON()函数中,因为对象没有.length属性。要查找对象拥有的关键点的数量,可以使用Object.keys(myArr).length。所以在你的for循环中,obj.length是空的,所以i不能小于空,所以它不会执行。因此,如果您用i < Object.keys(obj).length替换i < obj.length,应该可以解决这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30423910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档