我是python和JS的新手。我试图从js代码调用python方法。 python代码应该做一些计算并返回结果,这是数组的数组(例如,[[1,3],[3,5]])。我看过几个答案,例如this。但是,我无法解决我的问题。以下是我到目前为止:
JS代码:这将字符串“start”发送到我的python代码。
var a = $.post("/mlModel", {
Ml_list: JSON.stringify("start"),
contentType: "application/json",
dataType: "json"
});
console.log(JSON.parse(a));
Python代码:Python代码获取字符串“start”,执行一些处理,并以数组数组的形式返回结果[[2,4],[2,6]]
enter code here
@app.route('/mlModel', methods = ['POST'])
def get_post_MlModel():
jsdata = request.form['Ml_list']
jsdata = json.loads(jsdata)
jsdata = ast.literal_eval(json.dumps(jsdata))
// I send "start" to calculate method and it returns data = [[2,3],[1,3]]
data = calculate(jsdata)
return json.dumps(data)
当我运行此代码时,这会返回“位于1的JSON中的意外标记o”
有什么想法吗?
答案 0 :(得分:0)
jQuery.post是一个异步操作,因此当您尝试在响应中使用JSON时,a
尚未准备就绪。尝试使用在请求完成时调用的回调
$.post("/mlModel", {
Ml_list: JSON.stringify("start"),
contentType: "application/json",
dataType: "json"
}).done(function(data) {
console.log("success " + JSON.parse(data));
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error( "failure " + errorThrown );
})
答案 1 :(得分:0)
这是在服务器上发送和接收对象时使用的典型python和javascript代码。下面的示例从客户端发送一个字符串(“start”),并返回一系列顺序索引对作为列表。
在python方面:
@app.route('/testQuery', methods=['POST'])
def testQuery():
queryString = request.form['queryString']
outputList = []
for i in range(0,len(queryString)):
char = queryString[i]
outputList.append([i,(i+1)])
return jsonify({
"outputList" : outputList
})
在javascript方面:
$.post("/testQuery", {"queryString": "start"})
.done(function (response) {
console.log(response)
});
希望有所帮助。