2013-11-26 100 views
1

嗨我試圖從nginx後面的wsgi服務器(如果有的話)得到ajax響應。我認爲我在閱讀請求時遇到問題,因爲它似乎變量request_body_size始終爲0;當我想看到「測試字符串」時,我會在警告框中返回「無請求」的返回值。uWSGI AJAX,閱讀請求

我無法找到關於這個工作或這個工作的例子很多文件,所以如果有人知道如何解決這個問題,我將不勝感激。

我在WSGI腳本此Python代碼:

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

爲什麼不使用框架, G。燒瓶? – jwalker

+0

主要是因爲我對它的工作原理感興趣,但我也不認爲我需要這些功能。 – jayjay

回答

3

的AJAX()方法可轉換 '數據'當方法是GET時,將值賦給QUERY_STRING。使用POST應該解決問題(或者您可以閱讀environ ['QUERY_STRING'])

+0

非常感謝,你有這方面的來源嗎?我想詳細瞭解它分配的名稱。 – jayjay

+0

http://api.jquery.com/jQuery.ajax/用於ajax()命令,或者如果您引用CGI vars/environ check http://www.python.org/dev/peps/pep-3333 /#環境變量 – roberto

+0

謝謝第二個是我所要求的,再次感謝! – jayjay