微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – Ajax POST和Django Tastypie

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"latlong": "test"}' http://localhost:8000/geo/api/geolocation/

以上工作正常,但当我尝试在下面的ajax中复制POST时,我得到500错误.

$.ajax({
  type: 'POST',url: 'http://localhost:8000/geo/api/geolocation/',data: '{"latlong": "test"}',success: latlongSaved(),dataType: "application/json",processData:  false,});

错误信息是:

{"error_message": "The format indicated 'application/x-www-form-urlencoded' had no available deserialization method. Please check your ``formats`` and ``content_types`` on your Serializer." .... }

值得注意的是这是跨域的,我使用的是通过git:gist找到的django-crossdomainxhr-middleware.py

如果我向ajax调用添加内容类型,如下所示:

contentType: "application/json"

我收到此错误

XMLHttpRequest cannot load http://localhost:8000/geo/api/geolocation/. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.
Request URL:http://localhost:8000/geo/api/geolocation/
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
Access-Control-Request-Headers:Origin,Content-Type,Accept
Access-Control-Request-Method:POST
Origin:http://localhost:3000
Response Headersview source
Access-Control-Allow-Methods:POST,GET,OPTIONS,PUT,DELETE
Access-Control-Allow-Origin:*
Content-Type:text/html; charset=utf-8
Date:Tue,23 Aug 2011 07:59:49 GMT
Server:WsgiServer/0.1 Python/2.6.1

解决方法

您在通话中明确声明了您的内容类型,但您并未具体说明您的 jQuery.ajax()通话.

更新您的JavaScript以准确定义内容类型:

$.ajax({
  type: 'POST',contentType: "application/json"
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐