2013-11-26 3 views
1

안녕하세요, nginx (해당 문제가있는 경우) 뒤에 wsgi 서버에서 아약스 응답을 얻으려고합니다. 나는 그것이 변수로 보일 때 요청을 읽는 데 문제가 있다고 생각한다. request_body_size은 항상 0이다; "테스트 문자열"을보고 싶을 때 경고 상자에 "No Request"라는 반환 값을 얻습니다.요청을 읽는 uWSGI AJAX

이 작업에 대한 많은 문서를 찾을 수 없으므로 누구나이 문제를 해결하는 방법을 알고 있다면 감사 할 것입니다.

나는 WSGI 스크립트에서이 파이썬 코드가 있습니다

import os, sys 
from cgi import parse_qs 

def application(environ, start_response): 

    try: 
     request_body_size = int(environ.get('CONTENT_LENGTH', 0)) 
    except (ValueError): 
     request_body_size = 0 

    context = {} 
    if request_body_size != 0: 
     request_body = environ['wsgi.input'].read(request_body_size) 
     output = parse_qs(request_body) 
    else: 
     output = "No request" 


    status = '200 OK' 
    response_headers = [('Content-type', 'text/html'),('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 
    return [output] 

를이 요청 (JQuery와) 만드는 JS입니다 :

function test_request() 
{ 
    var test_string = "test string"; 
    $.ajax({ 
     type: 'GET', 
     url:"/ajax", 
     data: test_string, 
     success:function(result){alert(result)}} 
    ); 
} 
+0

프레임 워크를 사용하지 않는 이유는 무엇입니까? 지. 플라스크? – jwalker

+0

주로 작동 방식에 관심이 있기 때문에 주로 기능이 필요하다고 생각하지 않습니다. – jayjay

답변

3

아약스() 메소드는 '데이터를'변환을 메소드가 GET 일 때 값을 QUERY_STRING에 추가하십시오. POST를 사용하여 문제를 해결해야합니다 (또는 environ [ 'QUERY_STRING'])

+0

대단히 감사합니다. 출처가 있습니까? 할당 된 이름에 대해 더 알고 싶습니다. – jayjay

+0

http://api.jquery.com/jQuery.ajax/ ajax() 명령을 사용하거나 CGI vars/environ을 참조하는 경우 http://www.python.org/dev/peps/pep-3333을 확인하십시오./# environ-variables – roberto

+0

감사합니다 두 번째 것은 내가 필요한 것입니다. 다시 한 번 감사드립니다! – jayjay

관련 문제