在跨域ajax post中的回调函数中获取未定义
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在跨域ajax post中的回调函数中获取未定义相关的知识,希望对你有一定的参考价值。
我正在尝试向我的烧瓶应用程序发出ajax post请求并在回调函数中获得答案。不幸的是我得到了未定义的值而不是json。
将不胜感激任何帮助!
我的服务器端代码:
application = Flask(__name__)
CORS(application)
...
@application.route('/get_forecast', methods=['POST', 'GET'])
def get_forecast():
if request.method == 'POST':
print('in post')
predictions = {}
predictions['data'] = calc_forecast(request.get_json()["data"])
print(predictions)
return jsonify(predictions)
我的客户端代码:
$.ajax({
type: "POST",
url: "http://localhost:5000/get_forecast",
data: JSON.stringify(markers),
dataType: 'json',
crossDomain: true,
contentType: "application/json",
done: function(resp, status){
console.log('done')
console.log(resp)
console.log(status)
console.log('=====')
}(),
fail: function(xhr, ajaxOptions, thrownError){
console.log('fail');
console.log(thrownError)
}()
});
这是我在烧瓶终端中得到的:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [02/Dec/2018 12:59:53] "OPTIONS /get_forecast HTTP/1.1" 200 -
in post
{'data': [10.15451836569513, 56.578480707072714, 12.435548873275337]}
127.0.0.1 - - [02/Dec/2018 12:59:53] "POST /get_forecast HTTP/1.1" 200 -
这是我在chrome控制台中得到的:
demo.html:228 done
demo.html:229 undefined
demo.html:230 undefined
demo.html:231 =====
demo.html:234 fail
demo.html:235 undefined
答案
如果你看看http://api.jquery.com/jQuery.ajax/上的例子,他们看起来与你对$.ajax
的调用有很大的不同。我调整了你的代码以更好地类似于示例。也许这有帮助吗?
$.ajax({
type: "POST",
url: "http://localhost:5000/get_forecast",
data: JSON.stringify(markers),
dataType: 'json',
crossDomain: true,
contentType: "application/json"
})
.done(function (data, textStatus, jqXHR) {
console.log('done');
console.log(data);
console.log(textStatus);
console.log('=====');
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.log('fail');
console.log(textStatus);
});
我想,你在寻找success
和error
设置。
更新:是的,我很确定,你的设置done
和fail
是错误的。你想使用success
和error
。
另外,看看https://stackoverflow.com/a/10931891/1621041
这意味着,如果您想将所有内容放入$.ajax
调用的设置中,您的代码也可能如下所示:
$.ajax({
type: "POST",
url: "http://localhost:5000/get_forecast",
data: JSON.stringify(markers),
dataType: 'json',
crossDomain: true,
contentType: "application/json",
success: function (data, textStatus, jqXHR) {
console.log('done');
console.log(data);
console.log(textStatus);
console.log('=====');
},
error: function (jqXHR, textStatus, errorThrown ) {
console.log('fail');
console.log(errorThrown);
}
});
以上是关于在跨域ajax post中的回调函数中获取未定义的主要内容,如果未能解决你的问题,请参考以下文章