从Python发送数组到JS

时间:2017-11-06 18:12:24

标签: javascript python python-2.7

我是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”

有什么想法吗?

2 个答案:

答案 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)                
        });

希望有所帮助。