Passing JSON data to the Flask server using AJAX?
本问题已经有最佳答案,请猛点这里访问。
我在jquery中有一些由前端生成的数组。
Edit1(基于Edgar Henriquez的回答):
我的JQ.JS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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屏幕中显示输出
1 2 3 4 5 6 7 8 9 10 11 12 13 | @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:
1 2 3 | <p> {{ element }} </p> |
编辑2:
使用此代码,/output.html生成:
1 2 | "Bad Request Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)" |
。
检查显示:
1 | "Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)" |
为什么它不认识它?
对于jquery代码,可以有一个javascript对象(将对象的属性命名为数组变量,只是为了约定)。像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 */} }); |
回到服务器中,您可以执行以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @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) |
号
你可以在你的
希望有帮助!