首页 > 解决方案 > 使用ajax将json从python返回到javascript时出现问题

问题描述

我正在articleUrl从我的 .js 发送到我的 python 函数,它工作正常。然后我希望我的 python 函数返回pubscore到 .js。

pubscore 在 .py 中打印良好,但随后我得到"Uncaught ReferenceError: pubscore is not defined at Object.myFunction [as success] (background.js:41)"。第 41var myPubscore = pubscore行在 .js 中。

背景.js

$.ajax({
    type: 'POST',
    url: `${url}/buttoncolor`,
    data: articleUrl,
    success: function urlFunction(data) {
    var myPubscore = pubscore;
    console.log(myPubscore);
    }
})

应用程序.py

def buttoncolor():
    import json
    if request.method == 'POST':
        if not request.form['url']:
            flash('Please enter all the fields', 'error')
        else:
            rurl = request.form['url']

            ...

            pubscore = pub_tuple[8]
            print(pubscore)
            return json.dumps(pubscore)
    else:
        strscore = str(pubscore)
        message = {'greeting': strscore}
        return jsonify(message)  # serialize and use JSON headers

建议的代码对我不起作用但可能对其他人有帮助

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    if (request.type == "articleUrl") {
        var articleUrl = request;
        $.ajax({
            type: 'POST',
            url: `${url}/buttoncolor`,
            data: articleUrl,
            success: function(){ alert('success');
            }
        })

        $.getJSON(`${url}/buttoncolor`,{data: articleUrl}, function(data) {
        doWork(data.greetings);
        });

        function doWork(myPubscore){
        console.log(myPubscore);
        if (myPubscore > 1)
        {console.log("myPubscore is more than 1")}
        }
    }

标签: javascriptpythonjqueryajaxflask

解决方案


请试试这个

function doWork(data) {
  const myPubscore = data.greeting;
  console.log(myPubscore)
  if (myPubscore > 1) {
    console.log("myPubscore is more than 1")
  }
}

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.type == "articleUrl") {
    var articleUrl = request;
    $.ajax({
      type: 'POST',
      url: `${url}/buttoncolor`,
      data: articleUrl,
      success: doWork,
      error: function(e) {
        console.log("error", e)
      }
    })
  }
})

推荐阅读