2013-11-26 33 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