#jquery #json #ajax #asp.net-mvc #asp.net-web-api
#jquery #json #ajax #asp.net-mvc #asp.net-web-api
Вопрос:
ОБНОВЛЕНО:
Я создаю простое приложение, используя MVC и Web API в качестве нового для меня упражнения. Это позволяет пользователю вставлять массив данных JSON в текстовую область и передавать его контроллеру Web API через AJAX с параметром сортировки, где значение основано на выбранной опции в выпадающем списке. Сортировку будет выполнять контроллер API. После сортировки он вернет URL-адрес, содержащий значение параметра, аналогичное приведенному ниже:
Home /Index /?sort=возраст
Home /Index /?sort=Фамилия
Home /Index /?sort= зарегистрирован
Я не уверен, куда поместить параметр строки запроса.
ОБНОВЛЕНО:
Вот мой вызов AJAX до сих пор..
$(document).ready(function () {
var profiles = $('#txtJSONData').val().replace(/(rn|n|r)/g,"");
$('#btnSubmit').click(function () {
$.ajax({
url: '/api/default',
data: JSON.stringify(JSON.parse(profiles)),
type: 'POST',
dataType: 'application/json',
success: function(data) {
alert("success");
},
error: function() {
alert("error");
}
});
});
});
ОБНОВЛЕНО:
Я уже получаю значения публикуемого массива JSON. Однако мне также нужно передать параметр строки запроса сортировки и его значение для выполнения сортировки. Я не уверен, куда их поместить. Нужно ли мне добавлять их в маршрут API? Или позволить контроллеру MVC обрабатывать это?
public class DefaultController : ApiController
{
[Route("api/default")]
[HttpPost]
public HttpResponseMessage Post([FromBody] JToken jsonBody)
{
}
}
Пытался найти решение как здесь, так и через Интернет, но не смог найти аналогичный сценарий с моим. Любая помощь и / или предложения будут высоко оценены. Заранее спасибо!
Комментарии:
1. Что такое
[HttpPost()]
?2. Это должно быть
return JSON.stringify({ data: $('#txtJSONData').val() });
для привязки к параметру в вашем методе. Но данные, которые вы отправляете, похоже, не имеют никакого отношения кList<Profile>
3. Что вы видите в инспекторе браузера в разделе «Сеть»? (F12 в большинстве браузеров)
4. @Div Упс, уже удалено ‘()’
5. @StephenMuecke Нужно ли, чтобы моя модель / список также были названы как Employee?
Ответ №1:
1 — Добавьте параметр сортировки в свое действие
public class DefaultController : ApiController
{
[Route("api/default")]
[HttpPost]
public HttpResponseMessage Post(string sort, [FromBody] JToken jsonBody)
{
}
}
2 — Вы можете вызвать свое действие, как показано ниже:
$(document).ready(function () {
var profiles = $('#txtJSONData').val().replace(/(rn|n|r)/g,"");
$('#btnSubmit').click(function () {
$.ajax({
url: '/api/default?sort=asc',
data: JSON.stringify(JSON.parse(profiles)),
type: 'POST',
dataType: 'application/json',
success: function(data) {
alert("success");
},
error: function() {
alert("error");
}
});
});
});