Как передать параметры в конечную точку GET WebApi с помощью вызова AJAX? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть конечная точка GET WebApi, которая является частью моего приложения MVC, которую я хочу использовать для обработки некоторых данных, которые я отправляю ей, и должна завершить отправку этих данных с помощью вызова jQuery AJAX.

Однако у меня возникают проблемы с передачей нужных параметров через вызов AJAX.В настоящее время я собираю все необходимые параметры в один объект, использую JSON.stringify() для преобразования параметров в строку и отправляю их в виде данных.

Есть ли что-то еще, что я здесь упускаю?Я могу передать эти параметры очень хорошо, если я делаю POST, но я бы хотел этого избежать, поскольку моя конечная точка не отвечает за вставку или обновление каких-либо данных.

Ниже приведен кодЯ использую как для конечной точки WebApi, так и для вызова AJAX.

Конечная точка WebApi:

Метод:

[HttpGet]
[Route("api/services/getservices")]
public IHttpActionResult GetServices(ServiceViewModel vm)
{
    return Ok(Request);
}

Классы:

public class ServiceViewModel
{
    public ServiceModel service { get; set; }
}

public class ServiceModel
{
    public string thing1 { get; set; }
    public string thing2 { get; set; }
    public string thing3 { get; set; }
    public string thing4 { get; set; }
}

AJAX:

var thing1 = $("#thing1").find(":selected").attr("program-id");
var thing2 = $("#thing2").val();
var thing3 = $("#thing3").val();
var thing4 = $("#thing4").val();
var obj = {
    thing1: thing1, 
    thing2: thing2, 
    thing3: thing3, 
    thing4: thing4 
};
obj = { "service": obj };
$.ajax({
    contentType: "application/json",
    url: "/api/services/getservices",
    type: "GET",
    data: JSON.stringify(obj),
    cache: false,
    success: function (data) {
        console.log(data);
        console.log("got here");
        serviceTable(data);
    },
    error: function () {
        servicEngineService.getProgramServices(programId, generateServiceTable, getProgramServicesFailure);
    }
});

1 Ответ

0 голосов
/ 10 декабря 2018

Вы должны использовать:

data: {
    thing1: thing1, 
    thing2: thing2, 
    thing3: thing3, 
    thing4: thing4 
};

Они будут переданы в строке запроса, поэтому будьте осторожны, это не должно быть слишком длинным.

Как сказал Нкоси, запросы GET donнет тела.Если он слишком длинный для строки запроса, вам следует использовать POST, даже если ваш сервер не будет изменять данные.

...