Javascript 在视图(JS)中填充表时未定义的值
我有js函数从谷歌api获取速度限制 这是代码Javascript 在视图(JS)中填充表时未定义的值,javascript,jquery,google-api,Javascript,Jquery,Google Api,我有js函数从谷歌api获取速度限制 这是代码 function getSpeedData() { //Getting dates from dates inputs and imei var start = $('#startDate').val(); var stop = $('#endDate').val(); var imei = parseInt($('#selectVehicles').val()); //Converting to needed format var newst
function getSpeedData() {
//Getting dates from dates inputs and imei
var start = $('#startDate').val();
var stop = $('#endDate').val();
var imei = parseInt($('#selectVehicles').val());
//Converting to needed format
var newstart = moment(start, "DD/MM/YYYY").format("YYYY-MM-DD");
var newstop = moment(stop, "DD/MM/YYYY").format("YYYY-MM-DD");
//Getting data from back-end
var roadsapikey = "**********";
var dburl = $('#getData').data('request-url');
var path = 'path= ';
var model = {
start: newstart,
end: newstop,
imei: imei
};
$.ajax({
url: dburl,
dataType: 'json',
type: 'GET',
data: model,
success: function (data) {
if (data.length !== 0) {
speeddata = data;
for (var i = 0; i < speeddata.length; i++) {
path = "path=" + speeddata[i].Latitude2 + ',' + speeddata[i].Longitude2;
var googleurl = "https://roads.googleapis.com/v1/speedLimits?"
+ path + "&key=" + roadsapikey;
$.ajax({
url: googleurl,
dataType: 'json',
type: 'GET',
success: function (data) {
speedlimits = data;
for (var i = 0; i < speedlimits.speedLimits.length; i++) {
speedobject.push({
speedlimits: speedlimits.speedLimits[i].speedLimit
});
speeddata.forEach((item, index) => Object.assign(item, speedobject[index]));
}
}
});
}
console.log(speeddata);
for (i = 0; i < speeddata.length; i++) {
$('#speeddata').append('<tr>' + '<td id="imei">' + speeddata[i].Imei + '</td>' +
'<td id="lat">' + speeddata[i].Latitude2 + '</td>' +
'<td id="lng">' + speeddata[i].Longitude2 + '</td>' +
'<td id="speed">' + speeddata[i].Speed + '</td>' +
'<td id="speedlimit">' + speeddata[i].speedlimits + '</td>' + '</tr>');
}
}
},
error: function () {
alert("Error");
}
});
函数getSpeedData(){
//从日期输入和imei获取日期
var start=$('#startDate').val();
var stop=$('#endDate').val();
var imei=parseInt($('#selectVehicles').val();
//转换为所需格式
var newstart=时刻(开始,“DD/MM/YYYY”)。格式(“YYYY-MM-DD”);
var newstop=时刻(停止,“DD/MM/YYYY”)。格式(“YYYY-MM-DD”);
//从后端获取数据
var roadsapikey=“**********”;
var dburl=$('#getData').data('request-url');
变量路径='路径=';
var模型={
开始:newstart,
完:新闻头条,,
伊梅:伊梅
};
$.ajax({
url:dburl,
数据类型:“json”,
键入:“GET”,
数据:模型,
成功:功能(数据){
如果(data.length!==0){
速度数据=数据;
对于(变量i=0;i for (i = 0; i < speeddata.length; i++) {
$('#speeddata').append('<tr>' + '<td id="imei">' + speeddata[i].Imei + '</td>' +
'<td id="lat">' + speeddata[i].Latitude2 + '</td>' +
'<td id="lng">' + speeddata[i].Longitude2 + '</td>' +
'<td id="speed">' + speeddata[i].Speed + '</td>' +
'<td id="speedlimit">' + speeddata[i].speedlimits + '</td>' + '</tr>');
}
for(i=0;i
但我有这个想法
我的错在哪里?属性似乎是正确的
感谢您的帮助。您应该在第二次ajax成功fn中创建阵列。创建字符串时未定义speedlimit属性 像这样:
...
success: function (data) {
if (data.length !== 0) {
speeddata = data;
for (var i = 0; i < speeddata.length; i++) {
path = "path=" + speeddata[i].Latitude2 + ',' + speeddata[i].Longitude2;
var googleurl = "https://roads.googleapis.com/v1/speedLimits?"
+ path + "&key=" + roadsapikey;
$.ajax({
url: googleurl,
dataType: 'json',
type: 'GET',
success: function (data) {
speedlimits = data;
for (i = 0; i < speeddata.length; i++) {
$('#speeddata').append('<tr>' + '<td id="imei">' + speeddata[i].Imei + '</td>' +
'<td id="lat">' + speeddata[i].Latitude2 + '</td>' +
'<td id="lng">' + speeddata[i].Longitude2 + '</td>' +
'<td id="speed">' + speeddata[i].Speed + '</td>' +
'<td id="speedlimit">' + speedlimits.speedLimits[i].speedlimit + '</td>' + '</tr>');
}
}
});
}
}
}
...
。。。
成功:功能(数据){
如果(data.length!==0){
速度数据=数据;
对于(变量i=0;i
console.log
显示值的最终状态。它不显示呼叫时的状态。
如果您想查看调用时的值状态,请使用
console.dir
为什么要减少post?这很奇怪!控制台有什么错误吗?没有errors@HamzaAbdaouiIn控制台,请开发一排阵列并发布图片?我发现了问题。如果我将async:false
设置为2ajax
call,则所有okay@HamzaAbdaoui