Передача данных в метод веб-API POST - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в Javascript, поэтому этот вопрос может быть основным.Я пытаюсь передать данные в метод POST веб-API, но не получаю значения правильно каждый раз.Я вижу, что javascript иногда отправляет только второй ответ (т.е. только requestOptions2), который, я думаю, связан с функцией обратного вызова.(Поскольку он не ожидает завершения первой функции обратного вызова для выполнения второй функции обратного вызова и отправки и вызова AJAX.) Кроме того, я не могу получить доступ к 'JSON.stringify (points) из Microsoft.Maps.loadModule (' Microsoft.Maps.Search ', function ()), поэтому я ищу способ передачи этих «точечных» данных в веб-API без потери информации.

Это мой код Javascript:

function RequestShuttle() {

    Microsoft.Maps.loadModule('Microsoft.Maps.Search', function () {
        var points = [];
        var searchManager = new Microsoft.Maps.Search.SearchManager(map);
        var requestOptions1 = {
            bounds: map.getBounds(),
            where: document.getElementById("origin").value,
            callback: function (answer, userData) {
                map.setView({ bounds: answer.results[0].bestView });
                map.entities.push(new Microsoft.Maps.Pushpin(answer.results[0].location));
                points.push((answer.results[0].location));

            }
        };
        var requestOptions2 = {
            bounds: map.getBounds(),
            where: document.getElementById("destination").value,
            callback: function (answer, userData) {
                map.setView({ bounds: answer.results[0].bestView });
                map.entities.push(new Microsoft.Maps.Pushpin(answer.results[0].location));
                points.push((answer.results[0].location));
                console.log(JSON.stringify(points));
                $.ajax({
                    type: "POST",
                    data: JSON.stringify(points),
                    url: "api/Trip",
                    contentType: "application/json"
                });
            }
        };
        searchManager.geocode(requestOptions1);
        searchManager.geocode(requestOptions2);
    });
}

1 Ответ

0 голосов
/ 06 мая 2019

Я украл этот ответ у: этого поста

Вот, вероятно, способ структурировать ваш код:

function first() {
   return $.ajax(...);
}

function second(data, textStatus, jqXHR) {
   return $.ajax(...);
}

function third(data, textStatus, jqXHR) {
   return $.ajax(...);
}

function main() {
    first().then(second).then(third);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...