在 api 调用中将硬编码输入转换为变量输入
translating hard coded input to variable input in api call
我正在关注矩阵计算器的 Here 映射示例,并让我的工作示例使用硬编码值。我想通过循环变量将其转换为可用代码以添加到 api 调用中。我尝试了很多方法来做到这一点,但都导致 400(格式不正确的调用)错误
下面的代码有效(尽管使用了我的 app_code 和 app_id)
$.ajax({
url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
type: "GET",
dataType: "jsonp",
jsonp: "jsoncallback",
data: {
app_code: "xxxxxxxxxxxxxx",
app_id: "xxxxxxxxxxxx",
destination0: "52.5488,-3.4974",
mode: "fastest;car",
start0: "52.7972,-3.1031",
start1: "52.5795,-3.8714",
start2: "52.5735,-3.1266",
start3: "51.9295,-2.8547",
start4: "51.9498,-3.5812",
summaryAttributes: "di,tt"
},
success: function(data, status) {
var i;
for (i = 0; i < data.response.matrixEntry.length; i++) {
alert("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
}
},
error: function(data) {
alert("error encountered trying to get mileage");
}
});
我的以下尝试无效
var sourceLocations = [{
lat: "52.7972",
lng: "-3.1031",
title: "Source_1",
distance: 0
}, {
lat: "52.5795",
lng: "-3.8714",
title: "Source_2",
distance: 0
}, {
lat: "52.5735",
lng: "-3.1266",
title: "Source_3",
distance: 0
}, {
lat: "51.9295",
lng: "-2.8547",
title: "Source_4",
distance: 0
}, {
lat: "51.9498",
lng: "-3.5812",
title: "Source_5",
distance: 0
}];
var myData = "{\"app_code\":\"J_lS80f2OSqMMDWFy2ZOmA\",\"app_id\":\"J_lS80f2OSqMMDWFy2ZOmA\",";
myData = myData + "\"destination0\":\"52.5488,-3.4974\",";
myData = myData + "\"mode\":\"fastest;car\",";
// loop thru source locations
var i;
for (i = 0; i < sourceLocations.length; i++) {
var ele = "\"start" + i + "\":";
myData = myData + ele + "\"" + sourceLocations[i].lat + "," + sourceLocations[i].lng + "\",";
}
myData = myData + "\"summaryAttributes\":\"di,tt\"}";
$.ajax({
url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
type: "GET",
dataType: "jsonp",
jsonp: "jsoncallback",
data: myData,
success: function(data, status) {
console.debug(data);
var i;
for (i = 0; i < data.response.matrixEntry.length; i++) {
alert("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
}
},
error: function(data) {
alert("error encountered trying to get mileage");
}
});
有人可以帮我提供正确的代码吗?如果可能的话,我哪里出错了。
我建议您使用开发者工具(浏览器请按 F12)检查您发送的请求。
像这样:
var myData = {
app_code: "YOUR_APP_CODE",
app_id: "YOUR_APP_ID",
destination0: "52.5488,-3.4974",
mode: "fastest;car",
summaryAttributes: "di,tt"
};
// loop thru source locations
for (var i = 0; i < sourceLocations.length; i++)
myData["start" + i] = parseFloat(sourceLocations[i].lat) + "," + parseFloat(sourceLocations[i].lng);
$.ajax({
url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
type: "GET",
data: myData,
success: function (data, status) {
console.debug(data);
var i;
for (i = 0; i < data.response.matrixEntry.length; i++) {
console.log("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
}
},
error: function (data) {
alert("error encountered trying to get mileage");
}
});
我正在关注矩阵计算器的 Here 映射示例,并让我的工作示例使用硬编码值。我想通过循环变量将其转换为可用代码以添加到 api 调用中。我尝试了很多方法来做到这一点,但都导致 400(格式不正确的调用)错误
下面的代码有效(尽管使用了我的 app_code 和 app_id)
$.ajax({
url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
type: "GET",
dataType: "jsonp",
jsonp: "jsoncallback",
data: {
app_code: "xxxxxxxxxxxxxx",
app_id: "xxxxxxxxxxxx",
destination0: "52.5488,-3.4974",
mode: "fastest;car",
start0: "52.7972,-3.1031",
start1: "52.5795,-3.8714",
start2: "52.5735,-3.1266",
start3: "51.9295,-2.8547",
start4: "51.9498,-3.5812",
summaryAttributes: "di,tt"
},
success: function(data, status) {
var i;
for (i = 0; i < data.response.matrixEntry.length; i++) {
alert("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
}
},
error: function(data) {
alert("error encountered trying to get mileage");
}
});
我的以下尝试无效
var sourceLocations = [{
lat: "52.7972",
lng: "-3.1031",
title: "Source_1",
distance: 0
}, {
lat: "52.5795",
lng: "-3.8714",
title: "Source_2",
distance: 0
}, {
lat: "52.5735",
lng: "-3.1266",
title: "Source_3",
distance: 0
}, {
lat: "51.9295",
lng: "-2.8547",
title: "Source_4",
distance: 0
}, {
lat: "51.9498",
lng: "-3.5812",
title: "Source_5",
distance: 0
}];
var myData = "{\"app_code\":\"J_lS80f2OSqMMDWFy2ZOmA\",\"app_id\":\"J_lS80f2OSqMMDWFy2ZOmA\",";
myData = myData + "\"destination0\":\"52.5488,-3.4974\",";
myData = myData + "\"mode\":\"fastest;car\",";
// loop thru source locations
var i;
for (i = 0; i < sourceLocations.length; i++) {
var ele = "\"start" + i + "\":";
myData = myData + ele + "\"" + sourceLocations[i].lat + "," + sourceLocations[i].lng + "\",";
}
myData = myData + "\"summaryAttributes\":\"di,tt\"}";
$.ajax({
url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
type: "GET",
dataType: "jsonp",
jsonp: "jsoncallback",
data: myData,
success: function(data, status) {
console.debug(data);
var i;
for (i = 0; i < data.response.matrixEntry.length; i++) {
alert("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
}
},
error: function(data) {
alert("error encountered trying to get mileage");
}
});
有人可以帮我提供正确的代码吗?如果可能的话,我哪里出错了。
我建议您使用开发者工具(浏览器请按 F12)检查您发送的请求。
像这样:
var myData = {
app_code: "YOUR_APP_CODE",
app_id: "YOUR_APP_ID",
destination0: "52.5488,-3.4974",
mode: "fastest;car",
summaryAttributes: "di,tt"
};
// loop thru source locations
for (var i = 0; i < sourceLocations.length; i++)
myData["start" + i] = parseFloat(sourceLocations[i].lat) + "," + parseFloat(sourceLocations[i].lng);
$.ajax({
url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
type: "GET",
data: myData,
success: function (data, status) {
console.debug(data);
var i;
for (i = 0; i < data.response.matrixEntry.length; i++) {
console.log("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
}
},
error: function (data) {
alert("error encountered trying to get mileage");
}
});