将数据传递到Web API POST方法

时间:2019-05-06 15:12:40

标签: javascript c# json ajax post

我是Java语言的新手,所以这个问题可能是一个基本的问题。我试图将数据传递到Web API的POST方法,但每次都无法正确接收值。我看到javascript有时仅发送第二个响应(即仅requestOptions2),我认为这是由于回调函数引起的。 (因为它不等到第一个回调函数完成后才能执行第二个回调函数并发布和AJAX调用。)而且,我无法从Microsoft.Maps.loadModule('Microsoft.NET)访问'JSON.stringify(points)。 Maps.Search',function()),所以,我正在寻找一种在不丢失信息的情况下将“指向”数据传递到Web 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 :(得分:0)

我从this post

窃取了此答案

这可能是构造代码的方式:

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);
}