一个简单的Ajax请求后空简单、Ajax

2023-09-10 19:56:26 作者:还可以摸摸肚子

我有一个简单的ajax post请求。请求被发送。但是,为什么当我在views.py打印request.POST,它说: request.POST:<的QueryDict:{}>

I have a simple ajax post request. The request is sent. But why when I print request.POST in views.py, it says that: request.POST: <QueryDict: {}>.

if (start <= end) {
   // fire a request to /tryit
       var args = {
       type: "POST",
       url: "/tryit/",
       data: {'x':x1, 'y': y1},
       error: function() {
          console.log("Error occurs");
       },
       success: function() {
          console.log("save_modification works");
       },
       complete:done
    };
    $.ajax(args);
    alert("ajax request is sent");
} 

在views.py,

def tryit(request):
    print "request: ", request

下面是当我打印请求信息的输出。输出被包括如下

Here is the output when I print request information. The output is included as below.

[Wed Nov 14 14:50:44 2012] [error] post request:  <WSGIRequest
[Wed Nov 14 14:50:44 2012] [error] path:/tryit/,
[Wed Nov 14 14:50:44 2012] [error] GET:<QueryDict: {}>,
[Wed Nov 14 14:50:44 2012] [error] POST:<QueryDict: {}>,
[Wed Nov 14 14:50:44 2012] [error] COOKIES:{'sessionid': 'f997a4c4ba0f576fe11141e0c0dcd38
 d'},
[Wed Nov 14 14:50:44 2012] [error] META:{'CONTENT_LENGTH': '128',
[Wed Nov 14 14:50:44 2012] [error]  'CONTENT_TYPE': 'application/x-www-form-urlencoded',
[Wed Nov 14 14:50:44 2012] [error]  'DOCUMENT_ROOT': '/var/www',
[Wed Nov 14 14:50:44 2012] [error]  'GATEWAY_INTERFACE': 'CGI/1.1',
[Wed Nov 14 14:50:44 2012] [error]  'HTTP_ACCEPT': '*/*',
[Wed Nov 14 14:50:44 2012] [error]  'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
[Wed Nov 14 14:50:44 2012] [error]  'HTTP_ACCEPT_LANGUAGE': 'en-ca',
[Wed Nov 14 14:50:44 2012] [error]  'HTTP_CONNECTION': 'Keep-Alive',
[Wed Nov 14 14:50:44 2012] [error]  'HTTP_COOKIE': 'sessionid=f997a4c4ba0f576fe11141e0c0d
cd38d',
[Wed Nov 14 14:50:44 2012] [error]  'HTTP_PRAGMA': 'no-cache',

[Wed Nov 14 14:50:44 2012] [error]  'HTTP_USER_AGENT': 'Mozilla/5.0 (compatible; MSIE 9.0
; Windows NT 6.0; Trident/5.0)',
[Wed Nov 14 14:50:44 2012] [error]  'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest',
[Wed Nov 14 14:50:44 2012] [error]  'PATH_INFO': u'/tryit/',
[Wed Nov 14 14:50:44 2012] [error]  'PATH_TRANSLATED': 'django.wsgi/tryit/',
[Wed Nov 14 14:50:44 2012] [error]  'QUERY_STRING': '',

[Wed Nov 14 14:50:44 2012] [error]  'REQUEST_METHOD': 'POST',
[Wed Nov 14 14:50:44 2012] [error]  'REQUEST_URI': '/tryit/',
[Wed Nov 14 14:50:44 2012] [error]  'SCRIPT_FILENAME': 'django.wsgi',
[Wed Nov 14 14:50:44 2012] [error]  'SCRIPT_NAME': u'',

[Wed Nov 14 14:50:44 2012] [error]  'SERVER_ADMIN': 'webmaster@localhost',

[Wed Nov 14 14:50:44 2012] [error]  'SERVER_PORT': '80',
[Wed Nov 14 14:50:44 2012] [error]  'SERVER_PROTOCOL': 'HTTP/1.1',
[Wed Nov 14 14:50:44 2012] [error]  'SERVER_SIGNATURE': '<address>Apache/2.2.22 (Ubuntu)
[Wed Nov 14 14:50:44 2012] [error]  'SERVER_SOFTWARE': 'Apache/2.2.22 (Ubuntu)',

[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.callable_object': 'application',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.enable_sendfile': '0',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.handler_script': '',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.input_chunked': '0',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.listener_host': '',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.listener_port': '80',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.process_group': '',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.queue_start': '1352926244930263',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.request_handler': 'wsgi-script',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.script_reloading': '1',
[Wed Nov 14 14:50:44 2012] [error]  'mod_wsgi.version': (3, 4),
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.errors': <mod_wsgi.Log object at 0xa8224c78>,
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.file_wrapper': <built-in method file_wrapper of
 mod_wsgi.Adapter object at 0xa8210218>,
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.input': <mod_wsgi.Input object at 0xa8205ef8>,
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.multiprocess': True,
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.multithread': True,
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.run_once': False,
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.url_scheme': 'http',
[Wed Nov 14 14:50:44 2012] [error]  'wsgi.version': (1, 0)}>


But when I use fiddler, I can see the query parameter string. I am stuck here for a day. Please help. Thanks.

新的更新:  我使用Chrome和网络选项卡,它说,有一个内部服务器错误而引发的jquery.min.js:16。我不undersand此信息。这是否包含在它的一些信息?

New updates: I use chrome and in the Network tab, it says there is an internal server error and the initiator is jquery.min.js:16. I do not undersand this information. Does this contain some information in it?

如果我从POST更改为GET,查询参数,可以由服务器:收到。但是,如果我使用POST,查询参数无法发布。如何解释呢?

If I change from POST to GET, the query parameters can be recieved by the server. But if I use POST, the query parameters cannot be posted. How can explain it?

推荐答案

您需要使用您的控制台,并检查你的Ajax调用的内容和标题。

You need to use your console and inspect both content and headers of your ajax calls.

您做到这一点萤火(我希望你有萤火安装在你的Firefox), 或者在Chrome中右击和放大器;检查元素

You do this in firebug (I hope that you have firebug installed in your firefox), or in Chrome right click &inspect element.

目前,在打开的窗口中,你应该有NET面板(萤火虫) 或者网络中的浏览器。

There in the opened window you should have NET panel (firebug), or Network in Chrome.

在那里,你会看到每一个呼叫服务器发出的细节,它的响应。

There you will see details of every call made to server, and it's response.