我正在尝试实现一个功能,该功能将基于某个ajax调用给出的响应文本来执行某些操作。但是我无法访问响应文本字段。这是我的代码:
var response = $.getJSON('/add_participant',{
email : uemail,
password : upassword
})
并且我试图通过这种方式访问它:
response.responseText
但是当我注销到控制台时,它说它是未定义的。
我认为这与访问响应文本之前需要先解决的ajax调用有关。那是因为如果我将其保存到全局变量中,则当我拉起网页并使用检查工具时,便能够以这种方式访问responseText。
在我的工作中如何获得回复文本?有什么方法可以让脚本等待它解决吗?
谢谢!
答案 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
}
})