У меня есть ajax-вызов метода WebAPI, например:
function GetGroupDetails(Id, StudentType, GrpID) {
var result = "";
$.ajax({
url: GetGrpDetails + Id + "&studenttype=" + StudentType + "&GrpId=" + GrpID, dataType: 'json',
success: function (data) { if (data != null && data != "") { result = data; } },
error: function (XHR, textStatus, errorThrown) { alert(textStatus + ":" + errorThrown); }
});
return result;
}
Здесь URL-адрес, который отправляется в WebAPI
/api/Students/GetGroups?Id=107&studenttype="Captain"&GrpId=88
Во время отладки, если значение в StudentType = "Капитан", оно входит как "\" Капитан \". Теперь в отладчике, если я заменю это на "Капитан", он отлично работает.
Фактический WebApi - это простой запрос LINQ для объекта контекста EF, который вернет действительное значение, если строка будет такой, как ожидалось, null в противном случае.
Итак, как мне получить строку по мере необходимости.
С уважением.
Вы смотрите значение в VS Debugger. Фактическое значение строки - "Captain"
. Я думаю, что правильное значение строки должно быть Captain
без каких-либо двойных кавычек. Поэтому исправьте вызов AJAX на стороне клиента.
Запрос должен выглядеть так:
/api/Students/GetGroups?Id=107&studenttype=Captain&GrpId=88
Таким образом, в основном это ваша переменная javascript для StudentType
которая нуждается в исправлении. Также я бы рекомендовал вам передать такие параметры, чтобы обеспечить правильную кодировку:
function GetGroupDetails(id, studentType, grpID) {
$.ajax({
url: GetGrpDetails,
data: { id: id, studentType: studentType, grpId: grpID },
success: function (data) {
if (data != null && data != "") {
// Do something with the data here but do not attempt to assign
// it to some external variable that you will be returning
}
},
error: function (XHR, textStatus, errorThrown) {
alert(textStatus + ":" + errorThrown);
}
});
}
Еще одно замечание о вашем коде - это возврат значения из функции GetGroupDetails
. Вы делаете вызов AJAX и внутри обратного вызова успеха вы назначаете значение переменной результата, которую вы возвращаете из функции. Очевидно, что это не сработает, потому что AJAX является асинхронным, и к тому моменту, когда выполняется обратный вызов успеха, функция будет долго завершена. Поэтому никогда не пытайтесь возвращать какие-либо значения из вызова AJAX. Используйте его внутри.
Удалите кавычки в URL-адресе, ваш URL-адрес запроса не должен иметь его. Попробуй это
/api/Students/GetGroups?Id=107&studenttype=Captain&GrpId=88
и функция, которую вы написали, НИКОГДА не возвратит никаких значений, кроме "", попробуйте вызвать нужную функцию в методе success
вызова ajax, где вы получите ответ.
Надеюсь это поможет.