2

シンプルな ajax 投稿リクエストがあります。リクエストが送信されます。しかし、view.py で request.POST を出力すると、次のように表示されるのはなぜですか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

リクエスト情報を印刷したときの出力は次のとおりです。出力は以下のように含まれます。

[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 であると表示されます。私はこの情報を理解していません。これには何らかの情報が含まれていますか?

POST から GET に変更すると、サーバーがクエリ パラメータを受け取ることができます。しかし、POST を使用すると、クエリ パラメーターを投稿できません。どのように説明できますか?

4

3 に答える 3

1

コンソールを使用して、ajax 呼び出しのコンテンツとヘッダーの両方を検査する必要があります。

これは、firebug (firefox に firebug がインストールされていることを願っています) で行うか、Chrome で右クリックして要素を検査します。

開いたウィンドウには、NET パネル (firebug)、または Chrome のネットワークが表示されます。

そこには、サーバーに対して行われたすべての呼び出しの詳細と、その応答が表示されます。

于 2012-11-14T18:59:55.653 に答える
0

dataディクテーションである必要があります。js は次のようになります。

if (start <= end) {
   // fire a request to /tryit
   var args = {
      ... 
      data: {"mydata" : mydata },
      ...
} 
于 2012-11-14T19:09:05.710 に答える
0

firebug で JavaScript をデバッグすると、「x1 が定義されていません」というエラーが表示されます。

x1 と y1 を文字列にするつもりですか? もしそうなら、これを試してみてください...

data: {'x':'x1', 'y': 'y1'},

お役に立てれば、

アンドリュー

于 2012-11-14T21:20:03.697 に答える