服务器 returns 元组列表到 ajax 请求但回到 html 我需要处理它并且 html(data) 没有给出正确的结构

server returns list of tuples to an ajax request but back in the html I need to work on it and html(data) doesn't give a proper structure

我设法将 ajax 请求发送到服务器,服务器回复了一个元组列表或者它也可能是一个字典,但是返回到发送请求的 html ,这个列表或字典有点变成了一个字符串,我无法迭代或处理它。这是因为 html(data),但我不知道除了 text(data) 之外的任何其他变体,但这并不能解决问题。 所以,一旦我发送了那个列表或字典,我该如何处理它(比如进行迭代)我正在使用 DJANGO。

我简化了代码,因为这很重要,假设我已经有一个字典,我将其转换为一个列表: 服务器(查看函数)RETURNS:

dictionary = {
            "key1": "value1",
            "key2": "value2"
        }
        lista = list(dictionary.items())
        return HttpResponse(lista)

然后返回发送请求的html代码,这个结果没有保持列表的性质,而是一个字符串

HTML 页数:

...
   ..
    datatype:'html'
                }).done(function(data) {
        $("#received_answer").html(data);
      });  // closing ajax group
                console.log(value);
        }); // closing the click function
    
    });// closing document ready
     </script>

我明白了:('key1', 'value1')('key2', 'value2')

已编辑:我需要将结果制成表格,所以像这样

$("#respuesta").html("<h5>"+data.heating+"</h5>");

无济于事,因为我无法用双引号键入每个单元格和行,我希望可以循环遍历的 Django 查询集。

如您所见,dictionary.items() returns 元组,因此这可能不是最佳方法。

您可以使用转换为 JSON 等中间步骤来传递此类结构

在您看来

import json

dictionary = {
            "key1": "value1",
            "key2": "value2"
        }
        json_dict = json.dumps(dictionary)
        return HttpResponse(json_dict)

然后在您的 javascript 中,您会得到一个看起来更 javascripty 的字符串,您现有的代码应该可以使用它。您还可以将字符串响应解析回 js 对象并使用它来循环它。

.done(function(data) {
    ///in case we need to debug, we can have a look at what is in data
    console.log(data)
    obj = JSON.parse( data);
    tableHTML = "<table><thead><th>Header1</th><th>Header2</th></thead><tbody>"
    ///iterate through properties with string keys
    
    for (const property in obj) {
      tableHTML += "<tr><td>"
      tableHTML += `${property}</td></td> ${obj[property]}`
      tableHTML += "</td></tr>"
    }
    tableHTML += "</tbody></table>"
    //place the tableHTML in the document
    $("#respuesta").html("tableHTML);