asp.net-mvc - por - jquery ajax mvc controller
La solicitud de Ajax devuelve el error HTTP 500, ¿usa MVC y $.ajax call con POST? (4)
He visto varios hilos sobre esto, y he intentado todas las respuestas ( ASP.NET MVC JsonResult return 500 )
Mi solicitud de ajax está reenviando un error interno 500. Si depuro nunca llego a mi acción.
Aquí está mi llamada ajax:
$.ajax({
url: ''@Url.Action("UpdateSortOrder", "FormItems")'',
data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
type: ''POST'',
success: function (data) {
console.log(data);
},
error: function (xhr, status, exception) {
console.log("Error: " + exception + ", Status: " + status);
}
});
Y mi acción:
[HttpPost]
public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
{
FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);
return Json(updatedItem, JsonRequestBehavior.DenyGet);
}
Usando la consola de Chrome, estos son los encabezados de respuesta de la respuesta:
HTTP / 1.1 500 Internal Server Error Cache-Control: privado Content-Type: text / html; charset = utf-8 Servidor: Microsoft-IIS / 7.5 X-AspNetMvc-Versión: 3.0 X-AspNet-Versión: 4.0.30319 X-Powered By: ASP.NET Fecha: martes, 18 de diciembre de 2012 21:53:41 GMT Contenido-Longitud: 17041
Los registros del servidor no muestran códigos de subestado. ¿Alguna idea de lo que estoy haciendo mal aquí? Prefiero usar POST en lugar de GET.
Los datos del formulario se muestran como:
itemToUpdateId: 18ac5399-342e-4a39-9da1-3281a89501df
newParentItemId: null
nuevoAnteriorItemId: nulo
Cual es correcta.
He intentado establecer contentType en application / json y traditional = true como en esta pregunta: Enviar una publicación ajax a mvc con "application / json; charset = utf-8" devuelve el error 500 de vs web developer server
Mismo error.
Antiguo post, respuesta alternativa ... En caso de que alguien termine aquí ..
Mi problema se debió al hecho de que la acción de mi controlador que estaba llamando devolvió un resultado de acción de vista parcial y el archivo .cshtml de .cshtml
no se publicó en el servidor (no se "incluyó" en el proyecto de Visual Studio cuando se publicó).
Bueno, pude averiguar cuál era el problema, no había nada malo en mi sintaxis AJAX, ni siquiera en la acción. Era solo que mi objeto devuelto contenía una referencia circular. Pude ver el error real en la consola de Chrome haciendo clic en la solicitud POST en la pestaña Red, luego viendo la pestaña de vista previa. Esto mostró el mensaje de error real.
Si no necesita un artículo actualizado con éxito, no lo devuelva, solo devuelva una variable simple
Fiddler es una gran herramienta para capturar solicitudes http que es bastante útil para depurar respuestas entre el lado del cliente y el lado del servidor. Solo ábralo cuando esté sospechando el problema en su navegador, y cuando ocurra el error, abra Fiddler y elija la solicitud, luego vea su información en bruto.