flask / apache:序列化数据未传递给Flask端点

时间:2013-08-08 00:40:25

标签: javascript ajax apache flask jinja2

在Flask中有一个稍微复杂的端点,当前部署到运行apache的应用程序的服务器:

@app.route('/whatever', methods=['GET', 'POST'])
def somefunct:
    if request.method == 'POST':
        templist = request.data.split("=", 1)
        << do some stuff with templist >>

    << do some other stuff >>
    return render_template('sometemplate.html', **<<variable dict>>)

sometemplate.html有点棘手,它包含一个从变量字典中提取数据的表,还提供了一个允许用户与之交互的下拉列表,将Jinja用于变量:

{% for item in << variable in dict >> %}

...

<td>
    <form name="category-form" id="category-form-{{ item }}" action="/whatever">
        <select name="{{ item }}" id="{{ item }}">
            <option value="1">Option 1</option>
            <option value="2">Option 2</option>
            <option value="3">Option 3</option>
        </select>
    </form>
</td>

然后我有一些javascript来触发正确的POST操作(加载jQuery):

$(document).ready(function() {
    {% for item in << variable in dict >> %}

    var form{{ item }} = $('category-form-{{ item }}');

    form{{ item }}.find('#{{ item }}').change(function(){
        $.ajax({
            type: "POST",
            url: form{{ item }}.attr('action'),
            data: form{{ item }}.serialize(),
            success: function(response){
                console.log("calling {{item}}")
            }
        });
    });

    {% endfor %}
});

我已经完成了测试,并且可以看到无论何时调用item的表单,它都会成功向正确的端点发送POST操作。

我还可以看到它正在序列化正确的对象,即319832=2

由于某种原因,序列化对象没有正确传递到端点 - templist是Flask中的空对象。

猜测这与ajax调用和端点接收request之间的握手有关。任何想法为什么端点可能没有在apache上下文中接收此请求,而上述工作在我的localhost上工作?

0 个答案:

没有答案