服务器 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);
我设法将 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);