我需要从AJAX响应中传递数据。这是代码:
function getLocation() {
$.get('https://ipinfo.io/json', function (data) {
console.log(data);
$('.test').html('<h2>Your location is: ' + data.city + '.</h2>');
});
}
getLocation();
它工作正常,但我想使用data.city
作为变量,我可以传递给其他api请求,以获得这个城市的温度。我正在开始js / jQuery开发,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
您处于异步上下文中,因此您不能简单地使用返回值。一种方法是通过提供相应的回调函数来链接动作。
var self = this;
function getLocation(callback) {
$.get('https://ipinfo.io/json', function (data) {
console.log(data);
$('.test').html('<h2>Your location is: ' + data.city + '.</h2>');
callback.call(self, data.city);
});
}
function getTemperature(location) {
//do another AJAX call here to get temperature and modify your DOM
}
getLocation(getTemperature);
答案 1 :(得分:0)
这是一个异步回调。因此,如果您想稍后使用它,例如进行另一次AJAX调用,那么您应该在回调中进行下一次调用:
function getLocation() {
$.get('https://ipinfo.io/json', function (data) {
console.log(data);
$('.test').html('<h2>Your location is: ' + data.city + '.</h2>');
// Use your data here for another AJAX call
$.get('https://example.com/test?city=' + data.city, function () {});
});
}
getLocation();
您可能会在稍后查找Promise以更优雅的方式处理异步代码。 https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/Promise