Javascript 难以将JSON解析为HTML,结果未定义?

Javascript 难以将JSON解析为HTML,结果未定义?,javascript,html,json,Javascript,Html,Json,我正在尝试使用getJSON和YQL解析YAHOO数据 连接运行良好,我检索可以看到的数据并登录到控制台,但无法将数据打印到我正在使用的JSP页面中。我使用了这里接受的答案: 几乎没有成功。这是我的JSP: <%@page import="p.build.classes.p.*"%> <!DOCTYPE JSP> <html lang="en"> <head> <meta http-equiv="Content-Type" content

我正在尝试使用getJSON和YQL解析YAHOO数据

连接运行良好,我检索可以看到的数据并登录到控制台,但无法将数据打印到我正在使用的JSP页面中。我使用了这里接受的答案:

几乎没有成功。这是我的JSP:

<%@page import="p.build.classes.p.*"%>

<!DOCTYPE JSP>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>untitled</title>
<style type="text/css">
    body { text-align: center; }
</style>
</head>
<body onLoad="gova();">

<div id="container">

</div>
<table id="userdata" border="1">
    <thead>
        <th>Change</th>
    </thead>
    <tbody></tbody>
</table>

<script id="userTemplate" type="text/x-jquery-tmpl">
    <tr>
        <td>${Change}</td>
    </tr>
</script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"    type="text/javascript" charset="utf-8"></script>   
<script src="https://raw.github.com/jquery/jquery-tmpl/master/jquery.tmpl.min.js" type="text/javascript" charset="utf-8"></script> 
<script src="scripts/script.js"></script>
<script type="text/javascript">
function gova() {
requestCrossDomainJSON(
    'yahoo.finance.quote',
    function(results) {
        var i, t = $('#userTemplate'), tbody = $('#userdata tbody');
      // console.log(data.query.results);

        for (var i = 0; i < results.userdata.length; i++) {
            t.tmpl(results.userdata[i]).appendTo(tbody);
        }
    }
);
return false;
}
</script>
</body>
</html>
错误发生在以下行:

        for (var i = 0; i < results.userdata.length; i++) {
            t.tmpl(results.userdata[i]).appendTo(tbody);
        }
for(var i=0;i
控制台表示无法读取未定义的属性userdata。因为JQuery模板被贬低了,我应该使用更好的方法将这些数据放到我的页面中吗?如果这仍然是我遇到的问题的有效解决方案,那么如果调用的JSON在提供的函数中未定义,我应该如何引用它的结果。我也尝试过用HTML文件代替JSP


提前感谢。

退货回复的
结果部分:

你在等这个吗


如果是这样,您需要获取
data.query.results['quote']['Change']
data.query.results.quote.Change
而不是试图将
data.query.results.json
传递到回调中,然后查看
结果.userdata

谢谢您的帮助,但是,当我将返回错误的循环替换为for(var I=0;Idata.query.results.quote.Change
并将其传递到
tmpl
。您需要记住,在访问每个子对象时,检查它们是否存在是值得的,但这会让您继续。很抱歉,data.query.results.quote.Change似乎仍有问题。在移除循环并简单地引用t.tmpl(data.query.results.quote.Change)、appendTo(tbody)之后;我无法访问返回的数据,它说,在本例中,tmpl不支持该数据。我还更改了脚本中的data.query.results.json回调想要创建一个fiddle吗?当然可以帮助调试
        for (var i = 0; i < results.userdata.length; i++) {
            t.tmpl(results.userdata[i]).appendTo(tbody);
        }
results: {
     quote: {
          Change: "-0.061"
     }
}