这个问题在这里已有答案:
我有api电话从后端获取所有车辆细节。页面加载成功后,我设置了超时1秒来运行此ajax调用并获取数据并将其存储在元素的.data()
中,如下所示:
var ajaxCall = function (url, params) {
return $.ajax({
data:params,
url:url,
type:'get',
dataType: 'json'
})
};
var getAllVehicles = function ($vehicle) {
var url = '/get-vehicles';
var params = {};
var vehicles_data;
$.when(ajaxCall(url,params)).then( function (data) {
console.log("data", data);
vehicles_data = data.vehicles;
$vehicle.data("vehicles", vehicles_data);
});
};
$ (function () {
var $vehicle = $(".vehicle_div");
setTimeout(function () { getAllVehicles($vehicle) }, 1000);
console.log("Data attr", $vehicle.data("vehicles"));
});
我将所有车辆存储在$vehicle.data("vehicles")
中,因为这些数据将由不同的功能访问。当我打印ajax数据时,它正在正常运行。但每当我打印$vehicle.data("vehicles")
它是未定义的。那是因为异步性和setTimeout吗?请告知如何解决此问题。
定义一个js变量是在没有$的情况下完成的