我正在尝试向ajax
PUT
服务器发送一些带有请求的自定义数据,但服务器端未收到数据。以下是发送请求的方法。
// Send ajax request
$.ajax({
type: "PUT",
url: "/some/url/",
data: {'verbose': true},
contentType: "application/json",
// Callbacks
success: function(response) {},
error: function(response) {},
complete: function(response) {},
});
以下是服务器收到的请求对象。
<WSGIRequest
path:/profile/cart/23/unsave/,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{'_we_wk_ls_': '%7B%22time%22%3A1378973525509%2C%22luid%22%3A%2213789735255096b17d47fa3a67adb%22%7D',
'csrftoken': '31qNsad14V33bovpnCnVh3WTaa44YQoM',
'djdt': 'hide',
'sessionid': 'qxpv1zshp05w777rfpr6mbl81irdzu3b'},
META:{'CELERY_LOADER': 'djcelery.loaders.DjangoLoader',
'CLICOLOR': 'true',
'COLORTERM': 'gnome-terminal',
'COMPIZ_CONFIG_PROFILE': 'ubuntu',
'CONTENT_LENGTH': '12',
'CONTENT_TYPE': 'application/json; charset=UTF-8',
u'CSRF_COOKIE': u'31qNsad14V33bovpnCnVh3WTaa44YQoM',
'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-EUBCf7VXvY,guid=5b8264e5a43262a19a9a7e1e00000039',
'DEFAULTS_PATH': '/usr/share/gconf/ubuntu.default.path',
'DESKTOP_SESSION': 'ubuntu',
'DISABLE_AUTO_TITLE': 'true',
'DISPLAY': ':0',
'DJANGO_SETTINGS_MODULE': 'config.devel',
'GATEWAY_INTERFACE': 'CGI/1.1',
'GDMSESSION': 'ubuntu',
'GIO_LAUNCHED_DESKTOP_FILE': '/usr/share/applications/terminator.desktop',
'GIO_LAUNCHED_DESKTOP_FILE_PID': '3100',
'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated',
'GNOME_KEYRING_CONTROL': '/tmp/keyring-YjGbUi',
'GNOME_KEYRING_PID': '2036',
'GPG_AGENT_INFO': '/tmp/keyring-YjGbUi/gpg:0:1',
'GREP_COLOR': '1;32',
'GREP_OPTIONS': '--color=auto',
'HOME': '/home/amyth',
'HTTP_ACCEPT': 'application/json, text/javascript, */*; q=0.01',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_COOKIE': 'csrftoken=31qNsad14V33bovpnCnVh3WTaa44YQoM; _we_wk_ls_=%7B%22time%22%3A1378973525509%2C%22luid%22%3A%2213789735255096b17d47fa3a67adb%22%7D; djdt=hide; sessionid=qxpv1zshp05w777rfpr6mbl81irdzu3b',
'HTTP_HOST': '127.0.0.1:8000',
'HTTP_REFERER': 'http://127.0.0.1:8000/some/url/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0',
'HTTP_X_CSRFTOKEN': '31qNsad14V33bovpnCnVh3WTaa44YQoM',
'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest',
'LANG': 'en_IN',
'LANGUAGE': 'en_IN:en',
'LC_CTYPE': 'en_IN',
'LESS': '-R',
'LOGNAME': 'amyth',
'LSCOLORS': 'exfxcxdxbxegedabagacad',
'LS_COLORS': 'di=38;5;222:fi=38;5;59:ln=38;5;116:ex=38;5;107:ow=48;5;33;38;5;230:tw=48;5;235;38;5;33',
'MANDATORY_PATH': '/usr/share/gconf/ubuntu.mandatory.path',
'OLDPWD': '/home/amyth',
'ORBIT_SOCKETDIR': '/tmp/orbit-amyth',
'PAGER': 'less',
'PATH': '/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/amyth/arcanist-repo/arcanist/bin',
'PATH_INFO': u'/profile/cart/23/unsave/',
'PWD': '/home/amyth/Projects/blob',
'QT_ACCESSIBILITY': '1',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_HOST': '',
'REQUEST_METHOD': 'PUT',
'RUN_MAIN': 'true',
'SCRIPT_NAME': u'',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '8000',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.3',
'SESSION_MANAGER': 'local/amyth-workbook:@/tmp/.ICE-unix/2047,unix/amyth-workbook:/tmp/.ICE-unix/2047',
'SHELL': '/usr/bin/zsh',
'SHLVL': '1',
'SSH_AGENT_PID': '2087',
'SSH_AUTH_SOCK': '/tmp/keyring-YjGbUi/ssh',
'TERM': 'xterm-256color',
'TERMINATOR_UUID': 'urn:uuid:44ae86d1-9d00-4bfa-ba5e-7aaf089a776f',
'TZ': 'Asia/Calcutta',
'UBUNTU_MENUPROXY': 'libappmenu.so',
'USER': 'amyth',
'WINDOWID': '67108868',
'XAUTHORITY': '/home/amyth/.Xauthority',
'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg',
'XDG_CURRENT_DESKTOP': 'Unity',
'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/',
'XDG_SEAT_PATH': '/org/freedesktop/DisplayManager/Seat0',
'XDG_SESSION_COOKIE': 'e3eb0e8427880c0282433b5a0000000a-1381740618.104950-1684525435',
'XDG_SESSION_PATH': '/org/freedesktop/DisplayManager/Session0',
'_': '/usr/bin/python',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0xb73310d0>,
'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x987de6c>,
'wsgi.input': <socket._fileobject object at 0xb22387ac>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>
但是当我在浏览器中检查请求标头时,我可以看到添加到REQUEST_PAYLOAD
. 以下是它的外观:
Request URL:http://127.0.0.1:8000/some/url/
Request Method:PUT
Status Code:200 OK
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:12
Content-Type:application/json
Cookie:_we_wk_ls_=%7B%22time%22%3A1378281143956%2C%22luid%22%3A%221378281143956452ac09ec7efaa23%22%7D; djdt=hide; PHPSESSID=fn7cliso1q9e3u9rk3dc4t8ra4; sessionid=4zc8di4r31w6siwy31frwu97t4z2on7w; csrftoken=RjmgBBv8IUQXhWwTVzoEhIhyLncU1OQN
Host:127.0.0.1:8000
Origin:http://127.0.0.1:8000
Pragma:no-cache
Referer:http://127.0.0.1:8000/profile/cart/
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
X-CSRFToken:RjmgBBv8IUQXhWwTVzoEhIhyLncU1OQN
X-Requested-With:XMLHttpRequest
Request Payload
verbose=true
Response Headersview source
Access-Control-Allow-Methods:POST,GET,OPTIONS,PUT,DELETE
Access-Control-Allow-Origin:*
Content-Type:application/json
Date:Wed, 16 Oct 2013 13:03:07 GMT
Server:WSGIServer/0.1 Python/2.7.3
Vary:Cookie
我检查了 Stack Overflow 上的其他问题和其他研究相同问题的博客,其中大多数建议数据应该随PUT
请求一起发送。我还遇到了另一个问题,答案表明这是一个浏览器问题,这只发生在最新版本的 chrome 中。我认为可能是这样,但我在 FF 上检查了相同的内容,但它也不适用于 FF。
这是一个错误,还是我做错了什么?任何建议和/或帮助将不胜感激。
以下是我正在使用的:
- jQuery 版本 1.8.0
- Django 1.5 版
- Chrome 版本 29.0.1547.76
- 火狐版本 24.0
更新 0.1
这太疯狂了,我尝试将请求更改为“POST”请求,但仍然无法正常工作。数据未通过“POST”或“PUT”请求传递。但它适用于“GET”请求。
更新 0.2
如果我删除contentType: "application/json"
,或将其更改为contentType: "application/x-www-form-urlencoded"
使用“POST”请求发送的数据,但它仍然不适用于PUT
请求。:/