2012-11-14 3 views
2

나는 간단한 아약스 게시물 요청을했습니다. 요청이 전송됩니다. 그런데 왜 내가 views.py에 request.POST를 출력 할 때, 그것은 : request.POST: <QueryDict: {}>라고 말합니다. views.py에서간단한 아약스 요청 게시 빈

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"); 
} 

,

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

여기서 I는 요구 정보를 인쇄 출력한다. 출력은 다음과 같습니다.

[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': '[email protected]', 

[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. 

새로운 업데이트 : 나는 크롬을 사용하고 네트워크 탭에서, 그것은 내부 서버 오류가 말한다 및 개시는 jquery.min.js입니다 : 16. 나는이 정보를 언저드하지 않는다. 여기에 정보가 포함되어 있습니까?

POST에서 GET으로 변경하면 쿼리 매개 변수를 서버에서 수신 할 수 있습니다. 그러나 POST를 사용하면 쿼리 매개 변수를 게시 할 수 없습니다. 어떻게 설명 할 수 있습니까?

+0

당신이 방화범이보고 또는 실제로 게시되는 것을 볼 유사한 시도 했습니까? 'mydata'에는 실제로 데이터가 포함되어 있습니까? – ernie

+0

크롬 개발자 도구에서 콘솔 탭으로 이동하여 테스트하려는 이벤트를 시작합니다. 오류가 표시됩니까? 그렇다면 오류를 게시하십시오. –

+0

코드가 너무 불완전하여 제안을하지 못했습니다. 테스트에 필요한 모든 코드를 저희에게 주시면보다 나은 조언을 드릴 수 있습니다. –

답변

1

콘솔을 사용하여 아약스 호출의 내용과 헤더를 모두 검사해야합니다.

firebug (firebug가 firefox에 설치되어 있기를 바랍니다), 또는 Chrome에서 오른쪽 클릭 & inspection 요소를 사용하십시오.

열린 창에 NET 패널 (방화 광), 또는 Network in Chrome이 있어야합니다.

여기에 서버에 걸려온 모든 전화의 세부 정보와 응답이 표시됩니다.

+0

Ajax 통화 내용 및 헤더를 검사하는 방법은 무엇입니까? – susanne

+0

편집 내 대답 –

0

data은 사전이어야합니다. js는 다음과 같아야합니다.

if (start <= end) { 
    // fire a request to /tryit 
    var args = { 
     ... 
     data: {"mydata" : mydata }, 
     ... 
} 
+0

그것은 작동하지 않습니다 – susanne

+0

흠 .. [docs] (http://api.jquery.com/jQuery.ajax/)는 전송 된 데이터가 문자열로 변환되므로 JSON 개체 여야한다고 말합니다. mydata를 {{x ': x1,'y ': y1,'z ': z1}'로 변경하십시오. 그게 효과가있다. – Melevir

0

firebug에서 javascript를 디버깅 할 때 "x1 is not defined"오류가 발생합니다.

x1과 y1을 문자열로 사용 하시겠습니까? 그래서이 시도하는 경우 ...이 도움

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

희망,

앤드류

+0

문자열 인 변수입니다. – susanne