从getJson调用获取响应文本

时间:2020-04-05 08:04:37

标签: javascript ajax flask

我正在尝试实现一个功能,该功能将基于某个ajax调用给出的响应文本来执行某些操作。但是我无法访问响应文本字段。这是我的代码:

               var response = $.getJSON('/add_participant',{
                email : uemail,
                password : upassword
               })

并且我试图通过这种方式访问​​它:

response.responseText

但是当我注销到控制台时,它说它是未定义的。

我认为这与访问响应文本之前需要先解决的ajax调用有关。那是因为如果我将其保存到全局变量中,则当我拉起网页并使用检查工具时,便能够以这种方式访问​​responseText。

在我的工作中如何获得回复文本?有什么方法可以让脚本等待它解决吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

由于此操作是异步执行的,因此您需要在.done回调中进行处理。这是示例代码。

var response = null; // assign to [] if you think you will receive an array
$.getJSON('/add_participant',{
  email : uemail,
  password : upassword
}).done(function (data) {
  response = data;
  console.log('response: ', data);
})

答案 1 :(得分:0)

嘿,我弄清楚了我的代码出了什么问题,这实际上是我正在调用的python代码的问题。我正在使用Python的Flask库设置我的网站,并且我正在使用ajax调用在后端使用python函数并获取返回的输出。问题是当我在python函数中返回输出时,我正在返回一个字符串,就像这样:

return ("It worked!")

该功能的其余部分仍在运行,并且可以执行我想要执行的操作,并且当我使用检查工具时,仍可以检查出响应。但是返回的值格式不正确。看来这导致前端Javascript代码的某些方面无法从Python收到Python函数已完成的消息。因此, .done(function(data){}) 块中的任何内容都不会执行。

要解决此问题,我不得不返回一个jsonified字典。 jsonify是Flask库中的函数。这是它的外观:

return(jsonify({'result': 'It worked!'}))

然后,如果您想通过javascript访问该数据,请访问 .done(函数(数据){}) 块。对我来说,看起来像这样:

var response = $.getJSON('/add_participant',{
                email : uemail,
                password : upassword
               }).done(function (data) {
                if (data.result ='It Worked!'){
                    console.log("It worked!!");
                    // Do whatever else you wanted

                }
                else{
                    console.log("It didn't work.");
                    // Do something else
                }


                })