我有一个来自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);
}
});
任何反馈都会受到赞赏,我将如何运行。如果我可以避免它,我宁愿不使用另一个库。
答案 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调用以获得响应:
$.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(' ')
;
var prop = $('<div/>', {html: indentation + key + ': ' + (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;
答案 2 :(得分:0)
如@Moishe Lipsker在评论中所述,您没有AJAX请求,只有一个带有一堆GET参数的URL。您应该阅读其中一个jQuery AJAX方法,例如返回所需JSON对象所需的$.ajax()
。