当前位置: 首页 > 知识库问答 >
问题:

使用AJAX将JSON数据传递到Flask服务器?[副本]

禹智渊
2023-03-14

我有几个由JQuery前端生成的数组。

Edit1(基于Edgar Henriquez的回答):

我的jq。js:

var a = ['one','two'];
var b = ['three','four'];
var c = ['five'];
var d = ['six','seven','eight']; 
var e = ['nine','ten','eleven'];
var newArray = [];

//jsonify to send to the server
$.ajax('/output', { 
    type: "POST",
    contentType: "application/json",
    dataType: "json",
    data: JSON.stringify(postData),
    success: function(data, status){
        console.log(newArray); 
        console.log(status);} 
 });

我将选择的值传递给服务器(Flask/python),并让它计算笛卡尔积。然后我需要在输出中显示输出。html屏幕

@app.route('/output', methods = ['GET','POST'])
def output():
    data1 = request.get_json(force = True)
    a = data1['a']
    b = data1['b']
    c = data1['c']
    d = data1['d']
    e = data1['e']
    newArray = [a,b,c,d,e]
for element in itertools.product(*newArray):
    print(element)
    return jsonify(element)
return render_template('output.html', element = element)

output.html:

<p>{{ element }}</p>

编辑2:

有了这段代码,/output。html生成:

 "Bad Request
 Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)"

检查显示:

 "Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)"

为什么它不认识它?

共有1个答案

穆季萌
2023-03-14

对于jquery代码,您可以有一个JavaScript对象(将对象的属性命名为数组变量,仅用于约定)。大概是这样的:

var a = ['one','two'];
var b = ['three','four'];
var c = ['five'];
var d = ['six','seven','eight']; 
var e = ['nine','ten','eleven'];

var postData = {
  a: a,
  b: b,
  c: c,
  d: d,
  e: e
}

$.ajax({
    url: "/output",
    type: "POST",
    contentType: "application/json",
    data: JSON.stringify(postData),
    success: function(data){/* do something */}
});

回到服务器,您可以执行以下操作:

@app.route('/output', methods=['POST'])
def output():
    result = []
    data = request.get_json()
    a = data['a'] #will give you array a
    b = data['b'] #will give you array b
    c = data['c'] #will give you array c
    d = data['d'] #will give you array d
    e = data['e'] #will give you array e
    newArray = [a, b, c, d, e]
    #To test you got the data do a print statement

    print(newArray)

    # The for loop is not necessary if you pass the newArray directly to 
    # your template "output.html".
    #
    #for element in newArray:
    #    result.append(element)
    #
    #like this
    return render_template('output.html', element=newArray)

您可以在输出中显示结果。html无论你决定什么对你最合适,只要记住

希望有帮助!

 类似资料:
  • 我是新的使用烧瓶或JS,因为,我找不到一个方法来做我想做的。我使用flask(在python中)创建了一个webserver,它使用index.html作为主页面,我希望每隔几秒(可能1-3秒)更新一次服务器数据。问题是,我没有任何形式可以使用,甚至没有查询,我不知道还可以使用什么。我想发送的数据是小字符串,稍后将保存在服务器主机上。

  • 问题内容: 我知道如何使用jinja模板将数据从python传递到javascript,但是我想将javascript变量传递到python。我想这样做而无需重新加载页面。那可能吗? 问题答案: 是的,就像monkut所说的那样-我相信您想使用JSON和Javascript / jQuery。 这将允许从客户端到服务器的通讯,然后再返回。 我发现的最适用的示例是在Flask片段/模式中:http

  • 问题内容: 我正在尝试将数据发送到我的PHP脚本来处理一些东西并生成一些东西。 在我的PHP文件中,我尝试检索专辑名称。虽然当我验证它时,我创建了一个警报以显示什么都没收到,但是我尝试通过 虽然会说undefined:/ 问题答案: 您正在发送POST AJAX请求,因此请在您的服务器上使用来获取值。我也建议您这样编写请求,以确保正确的编码: 或简称为: 如果您想使用GET请求: 或简称为: 现在

  • 问题内容: 如何将ID从此Ajax调用传递给TestController getAjax()函数?当我打电话时,网址是testUrl?id = 1 TestController.php 问题答案: 最后,我只是将参数添加到Route :: get()以及ajax url调用中。我在getAjax()函数中将$ _POST [‘id’]更改为$ _GET [‘id’],这使我的回复 TestCont

  • 问题内容: 我的网页上的表单有问题。我正在尝试使用ajax和json将表单值发送到php服务器,但是我无法正确地创建json对象。 我的JS代码 我的PHP代码 我知道已经问过类似的问题,但是答案并没有帮助我。 感谢您的帮助。 问题答案: 我能够获取json对象并在php端进行解析。某些变量的名称可能有所不同,部分原因是其中一些是预先编写的代码。这是我采取的步骤。 资料夹结构 Index.html

  • 问题内容: 嗨,我是JSON的新手。我的问题是如何通过ajax将JSON数据传递到静态Web服务? 请帮我。 我通过以下代码尝试过,但是我不确定 我的索引页 问题答案: