tipo por peticiones parámetros net mvc modelo lista enviar desde asp asp.net-mvc jquery asp.net-ajax

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.