向 Django REST Framework 发送 jQuery 请求导致找不到 JSON 对象错误

Posted

技术标签:

【中文标题】向 Django REST Framework 发送 jQuery 请求导致找不到 JSON 对象错误【英文标题】:Sending a jQuery Request to Django REST Framework Results in no found JSON object error 【发布时间】:2013-07-18 02:41:19 【问题描述】:

我正在使用 Django 的 REST 框架来支持 API,并使用 jQuery 向它发送 Ajax 请求。

以下 cURL 可以正常工作:

curl -X POST -d '"timeLogMins": 30, "personid": 3, "projectid": 8, "timeLogStart_dtm": "2013-07-18"' -H "Content-Type: application/json" -u user:password http://localhost:8000/api/timelogests/

但是,当我使用 jquery 进行 ajax 调用时,我收到了一个错误

$.ajax(
    url: update_url2,
    contentType:"application/json",
    headers: 
        "Authorization": "Basic " + window.btoa("user:password"),
    ,
    dataType: "json",
    data: 
            "timeLogMins":30,
            "personid":personid,
            "projectid":projectid,
            "timeLogStart_dtm":start_date
            ,
    type: 'POST',

).error(function(r) console.log(r) )
.success(function(r) console.log("success", r) )

设置标题工作正常,但数据似乎返回:

""detail": "JSON parse error - No JSON object could be decoded""

我昨天开始使用 REST 框架,所以对它还是很陌生。有没有办法可以拦截请求标头并检查该 JSON? REST Framework 请求对象不是很明显。

【问题讨论】:

事实证明,将发送的数据转换为实际的字符串将使 JSON 可以被框架读取。根据 jQuery 文档,这应该以任何一种方式发生,但它似乎破坏了这个特定的数据对象布局?这解决了我的问题,但我不确定出了什么问题。如果我能弄清楚,我会把它作为答案发布。 看起来 Json 数据没有正确创建,请您尝试使用硬编码值,例如 "timeLogMins": 30, "personid": 3, "projectid": 8, "timeLogStart_dtm ": "2013-07-18" @AnshJ 是的,请参阅我之前的评论。最终这就是我最终要做的,发送一个字符串而不是一个对象,我还没有回答这个问题,因为我不确定为什么 jQuery 不处理数据对象,因为它应该。我猜这可能是“日期”格式的问题。 【参考方案1】:

事实证明,将发送的数据转换为实际字符串将使 JSON 可以被框架读取。根据 jQuery 文档,这应该以任何一种方式发生,但它似乎破坏了这个特定的数据对象布局?这解决了我的问题,但我不确定出了什么问题。

【讨论】:

以上是关于向 Django REST Framework 发送 jQuery 请求导致找不到 JSON 对象错误的主要内容,如果未能解决你的问题,请参考以下文章

Python 3 Django Rest Framework - 如何向这个 M-1-M 模型结构添加自定义管理器?

如何使用 Postman 表单数据在 Django REST Framework 中发布嵌套数组?

无法让 CORS 与内容类型一起使用 - Django Rest Framework

Django Rest Framework 中的模型翻译

Django Rest Framework,模型序列化器,处理只读数据

如何向 Django 请求对象添加属性