La solicitud Ajax devuelve el error HTTP 500, utilizando MVC y $.¿llamada de ajax con POST?


He visto varios hilos sobre esto, y he probado todas las respuestas ( ASP.NET MVC JsonResult return 500)

Mi solicitud ajax está cambiando un Error Interno de 500. Si depuro, ni siquiera 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 chrome console, estos son los encabezados de respuesta de la respuesta:

Error Interno del Servidor HTTP / 1.1 500 Cache-Control: privado Tipo de contenido: texto / 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

NewPreviousItemId: null

Que es correcto.

He intentado configurar el ContentType a application / json y traditional = true como en esta pregunta: Enviando ajax post a mvc con "application / json; charset = utf-8" devuelve el error 500 de vs web developer server

Mismo error.

Author: Community, 2012-12-19

4 answers

Bueno, pude averiguar cuál era el problema, no había nada malo con mi sintaxis AJAX, o incluso con 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 de publicación en la pestaña Red, a continuación, ver la ficha vista previa. Esto muestra el mensaje de error real.

 66
Author: SventoryMang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-18 22:51:49

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. Simplemente ábralo cuando sospeche el problema en su navegador, y cuando se produzca el error, abra fiddler y elija la solicitud, luego vea su información sin procesar.

 1
Author: Ibrahim Amer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-20 14:41:56

Antiguo post, respuesta alternativa ... Por si alguien termina aquí ..

Mi problema fue causado por el hecho de que la acción de mi controlador a la que estaba llamando devolvió un Resultado de Acción de Vista Parcial y el archivo PartialView .cshtml no se estaba publicando en el servidor (no estaba "incluido" en el proyecto de Visual Studio cuando se publicó).

 1
Author: Chris Hammond,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-30 11:07:02

Si no necesita updatedItem con éxito, no lo devuelva, solo devuelva una variable simple

 0
Author: user3544798,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-10 05:42:05