首页 > 解决方案 > 从 ajax 调用返回 JSON 到 HTML div

问题描述

我有我的 javascript ajax 调用返回 json,我正试图把它放在 HTML 页面上。

我使用这段代码:

      success: function(response) {
        console.log(response);
        for (var i=0;i<response.length;++i)
        {
            $('#main').append('<div class="name">'+response[i].name+'</>');
        }
          },
          error: function(response) {
            alert(response);
          }
        });

然而,似乎将 json 打印到我的控制台就好了,但我没有得到任何返回到网站的东西。

我有一个 div 来收集它:

<div id="main">Test</div>

知道我哪里出错了吗?

编辑:控制台日志响应是这样的:

{totalPages: 0, firstPage: true, lastPage: true, numberOfElements: 0, number: 0, …}
columns: {columnIds: Array(3)}
firstPage: true
lastPage: true
number: 0
numberOfElements: 0
oberonRequestXML: [null]
oberonResponseXML: [null]
summaryData: {totals: Array(3)}
totalElements: 0
totalPages: 0
__proto__: Object

标签: javascriptjsonajax

解决方案


正如评论中所解释的,您的 JSON 响应不是一个数组——没有length属性,因此您的循环不会循环。此外,您似乎期望一个包含具有name属性的对象的数组。这在您得到的回复中无处可见。

假设您正在调用正确的 JSON 服务,您可以迭代的唯一信息存储在两个属性中:columns.columnIdssummaryData.totals. 所以你会得到一些东西,如果你这样编码:

console.log(response);
for (var i=0;i<response.columns.columnIds.length;++i) {
    $('#main').append('<div class="name">'
                 + response.columns.columnIds[i] 
                 + ': '
                 + response.summaryData.totals[i] + '</div>');
}

这假设这些值是原始值,从您得到的响应中并不清楚。

但同样,这不会输出name属性值,因为它们不会出现在您的 JSON 中,只要您的问题中可见。


推荐阅读