我有一个对象数组需要提交到 Django View 。 我将其字符串化并在控制台日志中检查结果。到目前为止它是有效的。但是,当我尝试在我的 View 中检索它时,我遇到了一些错误。
我尝试编辑我的代码,类似于我在该主题中找到的内容,不幸的是没有任何帮助。
我尝试使用 ast.literal_eval
而不是 json.loads
,传递 'items[]'
并通过 request.POST.getlist 收集数据
以及使用 request.body
和 request.is_ajax()
的解决方案。然而,两者都不允许我检索数据。
var items = [];
var formInput = $('#inputbox').val();
items.push({'item': formInput , 'metrics': metrics.toString()});
$('#id_search').click(function( event ) {
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
url: '{% url "list_of_items" %}',
data: {'items': JSON.stringify(items),},
success: function (response) {
console.log(data);
}
});
event.preventDefault();
});
在views.py中:
def list_of_items(request):
data = request.POST.get('items')
data_received = json.loads(data)
#another approach:
response_json = request.body
struct = {}
try:
response_json = response_json.decode('utf-8').replace('\0', '')
struct = json.loads(response_json)
except:
print('bad json: ', response_json)
#(...)
我看起来像是传递了一个空对象。
TypeError at /list_of_items
the JSON object must be str, not 'NoneType'
此 View 从同一模板 (list_of_items.html) 中的 JS 表单接收另一个 POST 请求,我想知道它是否干扰我的 ajax POST。
最佳答案
您没有正确发送数据。来自 docs :
A dictionary-like object containing all given HTTP POST parameters, providing that the request contains form data.
您需要将数据作为 key:value
对发送,或者需要将 request.body 解码为
data = request.body.decode('utf-8')
data_received = json.loads(data)
关于javascript - 通过 AJAX 向 Django View 提交 JS 数组会返回 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475378/