使用Javascript解析JSON并将结果用作AJAX

时间:2011-05-07 02:51:55

标签: php ajax json api

嘿伙计们,现在我正在尝试建立一个音乐发现网站,以便更多地了解网页设计和编程。它肯定是一个挑战,但在stackoverflow的帮助下,我到了那里。不管怎么说.....

我正在使用itunes的API来返回艺术家专辑(最初尝试过last.fm的API,但有太多的用户提交额外内容)。 iTunes仅提供json格式的结果,我根本不熟悉。这就是我想要完成的事情。

当用户点击艺术家时,他们会看到该艺术家的专辑。这需要使用ajax。我需要知道如何解析相册名称,发布日期等项目。这是JSON File的链接。

任何帮助将不胜感激。我和OH已经在网上做了一些研究,但没有任何理由我计划做什么。

干杯,
萨姆

2 个答案:

答案 0 :(得分:1)

您熟悉JavaScript对象和数组吗?因为那基本上都是JSON。 (不是居高临下;当我学习HTML时,我只能理解XML,而在学习JS之后我只获得了JSON。)

一旦你理解了JS对象/数组,如果你要在PHP中使用JSON,你就需要了解JS数组与PHP数组基本相同,并且JS对象基本上与PHP关联数组。

最后一部分是函数:当你得到JSON时,它可能只是一个字符串。如果您使用的是PHP 5.2,则可以访问json_decode,它将JSON转换为数组/关联数组。

如果我只是重复你已经知道的东西,这根本没有帮助,那么你可能需要更详细地了解你的问题。

修改
在阅读了对其他答案的评论后,听起来您正在尝试执行以下操作:

  1. 将JSON加入PHP,然后
  2. 将JSON从PHP发送到JavaScript,
  3. 使用JavaScript操作JSON。
  4. 这是对的吗?如果是,那么我之前说的几乎所有内容都是无用的。您可能希望从file_get_contents开始。您所要做的就是为它提供JSON的URL,并将JSON作为字符串返回。

    现在,如果您只是使用PHP获取它,以便可以直接将其发送到JavaScript,那么字符串就可以了。只需echo以JS可以处理的方式:

    <script>
    var data = <?php echo $JSON ?>;
    </script>
    

    请注意,最大的问题是它根本不执行任何安全检查。你可能会没事的,但请记住这一点。

答案 1 :(得分:0)

因为我对你使用PHP的方式还不是很清楚(不管你是这样通常是指你的页面,或者你是否会直接用php操纵json),这可能会或者可能会没有帮助:

页面(也许它是用php生成的?):

<html>
<head>
<script type="text/javascript">
function search()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    var resp = JSON.parse(xmlhttp.responseText);
    document.getElementById("result").innerHTML="";
    for(var i=0;i<resp.results.length;i++){
        document.getElementById("result").innerHTML+=resp.results[i].trackName+'<br/>';
    }
    }
  }
xmlhttp.open("GET","it_search.php?artist="+document.getElementById('search').value,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="myDiv"><input type="text" id="search"/><br/>
<button type="button" onClick="search()">search</button></div>
<div id="result"></div>
</body>
</html>

PHP Scraper:

<?php
header("content-type: application/x-javascript");
$var=urlencode($_REQUEST["artist"]);
$file=file_get_contents("http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?term=".$var."&limit=20");
echo $file;
?>