javascript - 通过 AJAX 向 Django View 提交 JS 数组会返回 TypeError

标签 javascript json ajax django

我有一个对象数组需要提交到 Django View 。 我将其字符串化并在控制台日志中检查结果。到目前为止它是有效的。但是,当我尝试在我的 View 中检索它时,我遇到了一些错误。

我尝试编辑我的代码,类似于我在该主题中找到的内容,不幸的是没有任何帮助。 我尝试使用 ast.literal_eval 而不是 json.loads,传递 'items[]' 并通过 request.POST.getlist 收集数据 以及使用 request.bodyrequest.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/

相关文章:

javascript - 在 <head> 元素中将 &lt;script&gt; 添加到 WordPress

javascript - 如何使用mailapp发送图像和图表?

javascript - 带有(过滤依据)来自 json 数据的数据表

php - 将 JSON 数组从 Android 应用程序发送到 PHP

ajax - 通过ajax渲染其他表单会导致其 View 状态丢失,如何将其添加回来?

javascript - onChange 将动态选择返回 null

javascript - 如何使用 runTime 函数更新时钟?

java - JSONObject.append 到对象 - 结果是嵌套数组?

javascript - 如何从 javascript 调用带参数的 ajax 函数

javascript - Grails-在remoteFunction中将JS变量用于 Controller 和 Action args