flask使用ajax交互,关于jquery:使用AJAX将JSON数据传递给Flask服务器?

  • Post author:
  • Post category:其他


本问题已经有最佳答案,请猛点这里访问。

我在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),让它计算笛卡尔积。然后我需要在output.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)

输出.html:

{

{ element }}

编辑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)”

为什么它不认识它?

对于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)

你可以在你的output.html中显示结果,但是你认为最适合你,记住

希望有帮助!

谢谢!在Ajax中,”成功”的目的是什么?

@feyzibagirov请求成功时要调用的函数。了解有关$.Ajax()的更多信息

当我运行它时,会得到”name错误:name’newarray’未定义”。似乎它没有将newarray识别为变量。原因可能是什么?