解析网页JSON

时间:2016-02-10 12:15:14

标签: javascript jquery json

我正在尝试显示特定网页

https://www.emcsg.com/marketdata/priceinformation

但无论如何,我的代码只打开本网站的主页,而不是上面提到的链接。我尝试了与许多其他网站相同的代码,它工作正常。我的代码如下:

<html>
<head>
<title>NASA Meteorology </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>
<script>
$(function(){
      function requestCrossDomain(site, callback) {
          if (!site) {
              alert('No site was passed.');
              return false;
          }
          var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=?';
          $.getJSON(yql, cbFunc);
          function cbFunc(data) {
              if (data.results[0]) {
                  data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
                      window[callback](data);
              } else throw new Error('Nothing returned from getJSON.');
          }
      }
      $('#test').click(function(){
          var url = 'https://www.emcsg.com/marketdata/priceinformation';

          requestCrossDomain(url, 'someFunction');
      });
});

function someFunction(results){
    console.log(results);
    $('#loadedContent').css("display","").html(results);
}
</script>
</head>
<body>
<button id="test">Submit</button>    
<br><br>
<div id="result"></div>
<div id="loadedContent"></div>
 </body>
</html>

我哪里错了?任何建议或帮助将不胜感激..谢谢

2 个答案:

答案 0 :(得分:0)

更改

&format=xml&callback=?

&format=json

你的$ .getJSON确实会获得JSON

结果将是一个类似

的对象
{
    "query": {
        "count": 1,
        "created": "2016-02-10T12:26:11Z",
        "lang": "en-AU",
        "results": {
            "body": {
                // removed for brevity
           }
        }
    }
}

答案 1 :(得分:0)

尝试将params传递给ajax而不是将它们附加到url

var yql = 'http://query.yahooapis.com/v1/public/yql';
          $.getJSON(yql,{q:'select * from html where url="' + site + '"',format:'json'},cbFunc);
          function cbFunc(data) {
              if (data.results[0]) {
                  data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
                      window[callback](data);
              } else throw new Error('Nothing returned from getJSON.');
          }