使用AJAX

时间:2018-09-22 19:05:17

标签: javascript ajax flask

我研究了无数的堆栈溢出问题,它们使我半途而废,但是现在我正试图将数据从请求中拉出来。

JAVASCRIPT

var teamData = homeTeam + "-" + awayTeam;
        $.ajax({
                url: "/teamSelected",
                type: "GET",
                data: teamData,
                success: function(response) {
                alert(response);
            },
        });

teamData的形式类似于:“切尔西-韦斯特汉姆”

FLASK

import csv
import time
import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

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

@app.route("/teamSelected")
def new():
    data = request.args.get('teamData')
    return data;

if __name__ == "__main__":
    app.run(debug=True)

此刻,这给了我一个“ 500 (INTERNAL SERVER ERROR)”。

代码的目的是从下拉列表中选择团队名称,这些名称通过AJAX调用传递。然后,python脚本将获取此数据,抓取有关给定游戏的信息,并将实时评论更新返回给javascript,然后将其呈现到网页上。

我在这里的知识落在data = request.args.get('jsdata')行。老实说,这只是我从其他见过的解决方案中复制而来的,并且尝试复制其他解决方案没有任何运气。

抱歉,我知道这是一个常见问题,但我似乎无法弄清楚。在此先感谢!

编辑
据我所知,其他解决方案讨论传递表单数据或JSON数据,而在这里我只是尝试传递单个变量。如果有解决方案,我很想看看他们,但仍然没有找到可以帮助我的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以为键值对创建一个对象,并通过以下方式将其传递给AJAX调用:

$.ajax({
  url: '/teamSelected',
  type: "GET",
  data: { teamData: 'myTeam-yourTeam'},
  success: function(){
    alert(this.url)
  }
});

发送GET请求时,要传递的args会在URL中进行编码。在此示例中,teamData的键值对在问号后进行编码,如下所示:

/teamSelected?teamData=myTeam-yourTeam 

request.args将值保留在查询字符串中。因此,在Flask视图中,您可以使用teamData来检索request.args.get('teamData')的值。

请查看此jsfiddle,以更好地了解其工作原理。