为什么Ajax / Flask返回值未定义?

时间:2014-10-10 04:36:49

标签: jquery python ajax flask

我正在尝试使用flask + html +其他python脚本+ JQuery构建一个非常简单的网站。到目前为止,它的html + JQuery部分正在工作,但每当我尝试从我的python脚本返回值时,它返回undefined,我不知道为什么。

HTML:

{% extends "layout.html" %}
{% block content %}
<script type=text/javascript>
$(function() {
    $("#submitBtn").click(function() {
         $.ajax({
            type: "GET",
            url: $SCRIPT_ROOT + "/task/",
            contentType: "application/xml; charset=utf-8",
            data: { echoValue: $('input[name="echoText"]').val() },
            success: function(data) {
            alert(data.value)
            $('#echoResult').text(data.value);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });     
  });
});
</script>
<strong>Enter a value:</strong>
<input type='text' size='10' id='echoText' name='echoText'>
<button type='button' id='submitBtn' name='submitBtn'>Submit via AJAX</button><br /><br   />
<strong></strong>
</br>

{% endblock %}

烧瓶中:

from flask import Flask, jsonify, render_template, request, Response
import re
from MyFunction import *
app = Flask(__name__)
app.config['SECRET_KEY'] = 'F34TF$($e34D';

@app.route('/')
def index():
    return render_template('index.html')

@app.route("/task/")   
def some_function():
    testdata = {"value": request.args.get('echoValue')}
    return Response(test(testdata['value']))

if __name__ == '__main__':
    app.run(port=8080, debug=True)

python脚本:

def test(value):
    return value

1 个答案:

答案 0 :(得分:0)

我稍微更改了您的功能,从变量的开头删除$符号,并从返回的值中删除.data。要设置输入值,我使用了val()方法。此外,您根本不需要SCRIPT_ROOT

<script type=text/javascript>
$(function() {
    $("#submitBtn").click(function() {
         $.ajax({
            type: "GET",
            url: "/task/",
            contentType: "application/xml; charset=utf-8",
            data: { echoValue: $('input[name="echoText"]').val() },
            success: function(data) {
            alert(data)
            $('#echoResult').val(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });     
  });
});
</script>