试图将json响应放在表中 - 未定义的错误

时间:2016-03-22 09:54:37

标签: javascript json

我有一个来自API的json响应,我试图把它放在一个表中。这就是我所拥有的:

http://jsfiddle.net/xnj1hwwj/2/

$(document).ready(function() {
  var json = "http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.4500&lng=-2.5833&username=demo&maxRows=2&radius=5";
  var tr;
  for (var i = 0; i < json.length; i++) {
    tr = $('<tr/>');
    tr.append("<td>" + json[i].name + "</td>");
    tr.append("<td>" + json[i].distance + "</td>");
    $('table').append(tr);
  }
});

任何反馈都会受到赞赏,我将如何运行。如果我可以避免它,我宁愿不使用另一个库。

3 个答案:

答案 0 :(得分:1)

如果您希望json拥有一些数据,那么您的代码应该是这样的:

var url = "http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.4500&lng=-2.5833&username=demo&maxRows=2&radius=5";
var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function (e) {
    if (this.readyState === 4 && this.status == 200) {

        //turn the response into a json object
        data = JSON.parse(xhr.responseText);
        // do whatever you want now


    }
}
xhr.open('GET', url, true);
xhr.send();

由于https://developer.mozilla.org/en-US/docs/Security/Mixed_content

,你无法让它在小提琴中发挥作用

答案 1 :(得分:1)

首先进行ajax调用以获得响应:

&#13;
&#13;
$.get('http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.4500&lng=-2.5833&username=demo&maxRows=2&radius=5', function(json) {
  renderResponse(json, $('#result'), 0);
});
function renderResponse(obj, node, space) {
    var keys = Object.keys(obj);
    for(var i = 0; i < keys.length; i ++) {
        var inside = obj[keys[i]]
        ,   isWritable = ['string', 'number', 'boolean'].indexOf(typeof inside) != -1
        ,   key = keys[i]
        ,   indentation = Array(space + 1).join('&nbsp;')
        ;
        var prop = $('<div/>', {html: indentation + key + ':&nbsp' + (isWritable ? inside : '[') + '<br>'}).appendTo(node);
        if(!isWritable) {
            renderResponse(inside, prop, space + 8);
            $('<div/>', {html: indentation + ']' + (i < keys.length - 1 ? ',' : '') + '<br>'}).appendTo(prop);
        }
    }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="result"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如@Moishe Lipsker在评论中所述,您没有AJAX请求,只有一个带有一堆GET参数的URL。您应该阅读其中一个jQuery AJAX方法,例如返回所需JSON对象所需的$.ajax()

http://api.jquery.com/jquery.ajax/