Несоответствие строк при вызове ajax в WebApi

0

У меня есть 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 в противном случае.

Итак, как мне получить строку по мере необходимости.

С уважением.

Теги:
asp.net-web-api

2 ответа

1
Лучший ответ

Вы смотрите значение в 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. Используйте его внутри.

0

Удалите кавычки в URL-адресе, ваш URL-адрес запроса не должен иметь его. Попробуй это

/api/Students/GetGroups?Id=107&studenttype=Captain&GrpId=88

и функция, которую вы написали, НИКОГДА не возвратит никаких значений, кроме "", попробуйте вызвать нужную функцию в методе success вызова ajax, где вы получите ответ.

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню