uWSGI AJAX,阅读请求

时间:2013-11-26 22:02:05

标签: python ajax nginx wsgi uwsgi

您好我正在尝试从nginx后面的wsgi服务器获取ajax响应(如果这很重要)。我认为我在阅读请求时遇到问题,因为变量 request_body_size 似乎总是为0;当我想看到“测试字符串”时,我在警告框中得到“无请求”的返回值。

我找不到很多关于此的文档或这方面的例子,所以如果有人知道如何解决这个问题,我将不胜感激。

我在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]

这是发出请求的js(jquery):

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

1 个答案:

答案 0 :(得分:4)

当方法为GET时,ajax()方法将'data'值转换为QUERY_STRING。使用POST应解决问题(或者您可以阅读environ ['QUERY_STRING'])