Я выполняю простую функцию для обновления поля в базе данных и получаю эту ошибку:
Не удалось загрузить ресурс: сервер ответил статусом 403 (Запрещено)
Я делаю запрос в html / JQuery:
function AgregarLike(id, num){
alert("Entre:" + id);
var urlAction = "@Url.Action("UpdateLikeVisitBrandPhoto", "Report")";
alert (urlAction);
var request;
// Fire off the request to /form.php
request = $.ajax({
url: urlAction + '/' + id,
type: "post"
});
// Callback handler that will be called on success
request.done(function (response, textStatus, jqXHR){
// Log a message to the console
console.info("Hooray, it worked!");
console.info(response);
console.info(textStatus)
alert("worked");
});
}
И контроллер (я все время возвращаю bu.CreateLike (Id), потому что хочу исправить ошибку):
public int UpdateLikeVisitBrandPhoto(int id)
{
try
{
try
{
var num = bu.CreateLike(id);
}
catch
{
return bu.CreateLike(id);
}
return bu.CreateLike(id);
}
catch (ServicesException ex)
{
logger.Error("", ex);
Console.WriteLine(ex);
return bu.CreateLike(id);
}
catch (Exception ex)
{
logger.Error("", ex);
Console.WriteLine(ex);
return bu.CreateLike(id);
}
}
И модель:
public int CreateLike(int id)
{
using (var sqlConnection = DatabaseUtilities.GetConnection())
{
var SQL = "UPDATE [RBAcuerdos].[dbo].[VisitBrandPhoto] SET MeGusta = 1 WHERE id = @paramId";
var sqlCommand = new SqlCommand(SQL, sqlConnection);
sqlCommand.Parameters.Add(new SqlParameter("paramId", id));
//sqlCommand.Parameters.Add(new SqlParameter("paramvalue", 1));
return sqlCommand.ExecuteNonQuery();
}
//throw new NotImplementedException();
}
Кто-нибудь может мне помочь?
Какие атрибуты у вас есть в методе контроллера? Есть [ValidateAntiForgeryToken]?
Спасибо, ребята, но не работает ... У меня нет атрибутов
Вы пытались сделать этот запрос как обычную отправку сообщения формы и посмотреть, работает ли это, просто для шиканья?
Я не понимаю, что ты имеешь в виду, Таплар. : /
bu.CreateLike (идентификатор); что вы возвращаете?
Потому что я хочу, чтобы возвращаемое значение устраняло проблему @Asif Raza.
Прокомментировал эту строку. Сначала попробуйте вернуть целочисленное значение жесткого кода.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку вы отправляете запрос POST, параметры, которые вам нужно отправить, не должны быть частью URL-адреса. Попробуйте отправить такие параметры, как:
request = $.ajax({
url: urlAction,
data: {id: id},
type: "POST",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("It worked!");
},
error: function () {
alert("Error");
}
});
Дальнейшее чтение: Как передать параметры в $ ajax POST?
Это не решает мою проблему. Я получаю то же сообщение: / Acuerdos / Report / UpdateLikeVisitBrandPhoto Не удалось загрузить ресурс: сервер ответил статусом 403 (Запрещено)
Я считаю, что это связано с аутентификацией, а не с семантикой отправки запроса POST. Обратите внимание на следующее: stackoverflow.com/questions/2805311/…
Это тоже не работает. Снова та же ошибка: POST rbhealth.es/Acuerdos/Report/UpdateLikeVisitBrandPhoto 403 (Запрещено)
Это не решение ни ==> stackoverflow.com/questions/2805311/….
@Javi Вы пробовали здесь решение №2 (stackoverflow.com/questions/2805311/…)? Что касается разрешений сетевых служб?
Да, у меня такой web.config, по крайней мере, в этих инструкциях.
request = $.ajax({
url: urlAction + '?id=' + id,
type: "get"
});
Подставьте свой код
var urlAction = "@Url.Action("UpdateLikeVisitBrandPhoto", "Report")";
Он порождает
/Report/UpdateLikeVisitBrandPhoto
Чтобы попасть в контроллер, вам нужно, чтобы ваш URL был
/Controller/Action?param1=paramvalue //single param
/Controller/Action?param1=paramvalue ¶m2=paramvalue //multiple params,apppend each paramname with prefix &
Попробуйте изменить тип: post, чтобы получить request = $ .ajax ({url: urlAction + '/' + id, type: "get"});