/ / AJAX call return Błąd serwera Interval w projekcie ASP.NET MV3 [duplicate] - javascript, ajax, asp.net-mvc

Połączenie AJAX zwracające błąd serwera pośredniego w projekcie ASP.NET MV3 [duplicate] - javascript, ajax, asp.net-mvc

Jestem nowy i korzystam z ASP.NET, MVC3 i AJAX.

Próbuję wywołać metodę w moim kontrolerze za pomocą wywołania AJAX, ale otrzymuję błąd serwera wewnętrznego.

Oto moja metoda JavaScript:

function DeleteItem(id) {
var answer = confirm("Are you sure ?")
if(answer) {
$.ajax({
type: "POST",
url: "/Item/Delete",
data: id,
dataType: "json",
success: function (data) {
alert("Function called");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
}

i oto moja metoda w moim kontrolerze:

public ActionResult Delete(int idItem) {
Item.Delete(idItem); //delete my item
return RedirectToAction("Index", "Item");
}

Wywoływana jest metoda JavaScript, ale kiedy odpowiem "Tak, jestem pewien, że chcę usunąć", otrzymuję błąd serwera wewnętrznego i nie jestem pewien dlaczego. Co powoduje błąd serwera?

Odpowiedzi:

1 dla odpowiedzi № 1

Domyślam się, że rozumujeszwewnętrzny serwer jest taki, że nazwa int, do której przechodzisz, nie pasuje do int, którego oczekujesz w kontrolerze. W rezultacie idItem jest najprawdopodobniej zerowy, co powoduje błąd wewnętrzny serwera podczas usuwania.

Zmień dane, aby pasowały

function DeleteItem(id) {
var answer = confirm("Are you sure ?")
if (answer) {
$.ajax({
type: "POST",
url: "/Item/Delete",
data: { idItem: id},
dataType: "json",
success: function (data) {
alert("Function called");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
}

0 dla odpowiedzi nr 2

Twoja metoda ActionResult nie ma atrybutu [HttpPost]. Twoje połączenie Ajax jest typu "POST".


0 dla odpowiedzi № 3

Być może potrzebujesz serializować id przechodzisz do działania w formacie JSON. Musisz również udekorować swoją metodę działania [HttpPost] atrybut tak, aby akceptował czasowniki POST.