На самом деле я пытаюсь передать сложный объект в веб-API. Ниже мой код:
js
$("#btnFetch").live("click", function () {
var dualdata = { Code: "XXX", Module: "1" };
$.ajax({
cache: false,
url: fetchProfileUrl,
type: 'GET',
dataType: 'json',
data: JSON.stringify(dualdata),
contentType: "application/json;charset=utf-8",
success: function (data) {
WriteResponse(data);
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
веб-API
[HttpGet]
public HttpResponseMessage FetchProfile([FromUri]JObject inputParam)
{
try
{
dynamic m = inputParam;
var productCode = m.ProductCode.Value as string;
var result = GetExecutiveProfileData(productCode);
return Request.CreateResponse(HttpStatusCode.OK, result);
}
catch (Exception ex)
{
return HandleException(ex);
}
}
Я успешно добираюсь до метода API FetchProfile через вызов ajax во время отладки. Однако я не получаю значение, которое я передал через ajax в веб-api (т.е. код: «XXX» и модуль «1») в параметре inputParam . Я действительно не могу понять, чего не хватает с моей стороны.
Благодарность,
1 ответ
Я нашел способ решить проблему, с которой столкнулся. Я создал класс запроса, содержащий два свойства «Код» и «Модуль», и назначил этот класс в качестве параметра для метода FetchProfile . Ниже приведены изменения, которые сработали правильно:
var dualdata = { Code: "XXX", Module: "1" };
$.ajax({
cache: false,
url: fetchProfileUrl,
type: 'GET',
dataType: 'json',
data: dualdata,
contentType: "application/json,
success: function (data) {
WriteResponse(data);
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
Веб-API
[HttpGet]
public HttpResponseMessage FetchProfile([FromUri]APIRequestParams request)
{
try
{
var result = GetProfileData(request.Code);
return Request.CreateResponse(HttpStatusCode.OK, result);
}
catch (Exception ex)
{
return HandleException(ex);
}
}
Всем спасибо за ответы
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.
FromUri
указывает, что параметры должны выбираться из строки запроса URL-адреса.JSON.stringify