У меня здесь немного смущение, поэтому я ищу немного руководства.Передача идентификатора функции с использованием Appcelerator Titanium
В принципе, у меня есть приложение, которое ведет переговоры с API и собирает информацию о «Турах». Первый запрос извлекает 3 тура (ID и имя) и сохраняет их в базе данных, второй запрос затем должен проходить три тура (с использованием конечной точки API конечной точки) и получать информацию (включая данные лон/лат) каждого тур.
Теперь это нормально работает.
Проблема, которую я испытываю, заключается в том, что каждый тур имеет свой собственный идентификационный номер. К сожалению, во втором и третьем турах используется тот же идентификационный номер, что и первый, когда они входят в базу данных.
Так что я предполагаю, что я не передаю идентификатор правильно.
Может ли кто-нибудь помочь получить этот цикл?
код ниже для всей функции ....
// get tours and add them to DB
function loadTours() {
// get the species data
var loader = Titanium.Network.createHTTPClient({
timeout: 30000 /* in milliseconds */
});
loader.onload = function() {
// get the JSON response
var tours = JSON.parse(this.responseText);
var db = Ti.Database.open('myDB');
// truncate the tours table
db.execute('DELETE FROM tours');
for (var i = 0; i < tours.length; i++) {
// Get the data from the feed
var tourID = tours[i].nid;
var tourTitle = tours[i].node_title.toUpperCase();
Ti.API.info(tourID + ' ' + tourTitle);
// check if images have been uploaded
if (tours[i].app_image.uri) {
// removed
} else {
var tourImageFullPath = "";
}
// add the tours to the SQL
db.execute('INSERT INTO tours (tourNID, tourName, tourImageURI) VALUES (?,?,?)', tourID, tourTitle, tourImageFullPath);
// lets do a loop through and insert the tour details
var getTourDetails = Titanium.Network.createHTTPClient({
timeout: 30000 /* in milliseconds */
});
getTourDetails.onload = function() {
var tourDetails = JSON.parse(this.responseText);
db.execute('DELETE FROM tourdetails');
for (var i = 0; i < tourDetails.length; i++) {
var tourNID = tourID;
var tourSpeciesID = tourDetails[i].node_field_data_field_tour_item_nid;
var tourType = tourDetails[i].node_field_data_field_tour_item_type;
if (tourDetails[i].Latitude.length === 0){
var tourLat = '';
} else {
var tourLat = tourDetails[i].Latitude;
}
if (tourDetails[i].Longitude.length === 0){
var tourLon = '';
} else {
var tourLon = tourDetails[i].Longitude;
}
if (tourDetails[i].node_field_data_field_tour_item_type.length === 0){
var tourItemType = '';
} else {
var tourItemType = tourDetails[i].node_field_data_field_tour_item_type;
}
var tourItemTitle = tourDetails[i].node_field_data_field_tour_item_title.toUpperCase();
db.execute('INSERT INTO tourdetails (tourNID, tourItemID, tourLon, tourLat, tourItemTitle, tourItemType) VALUES (?,?,?,?,?,?)', tourNID, tourSpeciesID, tourLon, tourLat, tourItemTitle, tourItemType);
Ti.API.info('TOUR: ' + tourNID + ' ' + tourSpeciesID + ' ' + tourLon + ' ' + tourLat + ' ' + tourItemTitle + ' ' + tourItemType);
}
};
getTourDetails.open("GET", "https://www.myapi.com/tour?nid=" + tourID);
// change the loading message
MainActInd.message = 'Downloading Data';
// show the indicator
MainActInd.show();
getTourDetails.send();
}
// now load the map markers
getMapMarkers();
}; //onload - end the JSON fetch and process for species
// Sets the HTTP request method, and the URL to get data from
loader.open("GET", "https://www.myapi.com/tours");
// change the loading message
MainActInd.message = 'Downloading Data';
// show the indicator
MainActInd.show();
loader.onerror = function() {
// do something if an error
MainActInd.hide();
//alert('tours data error');
var errorDialog = Ti.UI.createAlertDialog({
message: 'We are having an issue importing the Tour data. Please try again later.',
title: 'Whoops'
});
errorDialog.show();
};
// Send the HTTP request
loader.send();
}; // end the get data function
Я должен был маскировать несколько вещей, по соображениям безопасности, но вы должны получить представление о том, что я пытаюсь достичь!
Любая помощь была бы принята с благодарностью!
Simon
Вы могли бы добавить информацию о вызовах info()? И, возможно, измените внутренний цикл на другое имя переменной (не уверен, что его можно повторно использовать там) – miga
Это информационный вывод (образец), который вы можете видеть, все элементы имеют одинаковый начальный идентификатор. [INFO]: ТУР: 26395 26873 -0,151982000000 +51,533740000000 BLACKBURN выставка [INFO]: ТУР: 26395 22766 -0,152011000000 51,535223000000 ГИАЦИНТ MACAW животное –
И другая информация вызова для экскурсий сами выглядит следующим образом: [INFO]: 33506 TOUR 1 [INFO]: 33505 TOUR 2 [INFO]: 26395 TOUR 3 –