#jquery #asp.net #ajax
#jquery #asp.net #ajax
Вопрос:
Я пытаюсь вызвать веб-метод, используя AJAX в ASP.net
При отладке я столкнулся со следующей ошибкой
{Message: "Authentication failed.", StackTrace: null,…}
ExceptionType: "System.InvalidOperationException"
Message: "Authentication failed."
StackTrace: null
AJAX:
<script type="text/javascript">
function SaveRecord() {
//Get control's values
var year = $("#yeartxt").val();
var title = $("#titletxt").val();
var content = $("#contenttxt").val();
//Jquery Ajax call to server side method
$.ajax({
type: "POST",
url: "Page.aspx/InsertDetails",
data: "{'Year':" year ",'Title':" title ",'Content':" content "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert("Updated!");
}
});
}
</script>
Веб-метод:
[WebMethod]
public static string InsertDetails(string Year, string Title, string Content)
Настройка маршрута:
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
WebConfig:
<authentication mode="Forms">
<forms loginUrl="./SignIn.aspx"></forms>
</authentication>
Я реализовал аутентификацию формы с помощью ASP.net Личность.
Есть способы решить эту проблему?
Комментарии:
1. Только с ошибкой вам трудно помочь, было бы лучше, если бы вы включили код ajax. Возможно, также конечная точка
2. Обновлено. Я добавил код
Ответ №1:
Попробуйте этот код
$.ajax({
type: "POST",
url: "Page.aspx/InsertDetails",
data: JSON.stringify({ 'Year': Year, 'Title': Title, 'Content': content }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert("Updated!");
}
});
Настройка маршрута:
Прокомментируйте этот код
//settings.AutoRedirectMode = RedirectMode.Permanent;
Комментарии:
1. он выдал эту ошибку {Сообщение: «Недопустимый вызов веб-службы, отсутствует значение для параметра: ‘Year’.», …} ExceptionType: «System. Сообщение InvalidOperationException»: «Недопустимый вызов веб-службы, отсутствует значение для параметра: «Год»».
2. передайте жестко заданные параметры. ПРИМЕР: данные: JSON.stringify({ ‘Год’: 1992, ‘Заголовок’: ‘xyz’, ‘Содержимое’: ‘Ваш контент’ })
3. Это сработало таким образом
data: '{Year: "' year '", Title: "' title '", Content: "' content '" }',
, спасибо за вашу помощь! 🙂
Ответ №2:
Вероятно, это ваш объект данных, который недостаточно четко определен.
const data = {'Year':year,'Title': title, 'Content': content};
абд затем в вашем запросе:
...
data: JSON.stringify(data),
...
Это должно сработать, поскольку вы упомянули, что тип данных должен быть json
Комментарии:
1. Я попытался определить данные, как вы предложили. Однако он выдал ту же ошибку
2. та же ошибка: ( Я много раз пытался поиграть с данными и кодом ajax. Ничего не сработало. Связано ли это с форматом перенаправления URL? Я попытался изменить режим перенаправления в RouteConfig на
settings.AutoRedirectMode = RedirectMode.Off
, и он выдал другую ошибку, которая была{Message: "Invalid JSON primitive: undefined.",…} ExceptionType: "System.ArgumentException" Message: "Invalid JSON primitive: undefined