• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

258
Views
jQuery devolviendo "parsererror" para la solicitud de ajax

He recibido un "error de análisis" de jquery para una solicitud de Ajax, he intentado cambiar el POST a GET, devolviendo los datos de diferentes maneras (creando clases, etc.) pero parece que no puedo averiguar cuál es el problema.

Mi proyecto está en MVC3 y estoy usando jQuery 1.5. Tengo un menú desplegable y, en el evento de cambio, disparo una llamada para obtener algunos datos en función de lo que se seleccionó.

Menú desplegable: (esto carga las "Vistas" de la lista en Viewbag y la activación del evento funciona bien)

 @{ var viewHtmls = new Dictionary<string, object>(); viewHtmls.Add("data-bind", "value: ViewID"); viewHtmls.Add("onchange", "javascript:PageModel.LoadViewContentNames()"); } @Html.DropDownList("view", (List<SelectListItem>)ViewBag.Views, viewHtmls)

JavaScript:

 this.LoadViewContentNames = function () { $.ajax({ url: '/Admin/Ajax/GetViewContentNames', type: 'POST', dataType: 'json', data: { viewID: $("#view").val() }, success: function (data) { alert(data); }, error: function (data) { debugger; alert("Error"); } }); };

El código anterior llama con éxito al método MVC y devuelve:

 [{"ViewContentID":1,"Name":"TopContent","Note":"Content on the top"}, {"ViewContentID":2,"Name":"BottomContent","Note":"Content on the bottom"}]

Pero jquery dispara el evento de error para el método $.ajax() diciendo "parsererror".

about 3 years ago · Santiago Trujillo
3 answers
Answer question

0

Recientemente me encontré con este problema y me topé con esta pregunta.

Lo resolví de una manera mucho más fácil.

Método uno

Puede eliminar la propiedad dataType: 'json' del objeto literal...

Método dos

O puede hacer lo que decía @Sagiv devolviendo sus datos como Json .


La razón por la que aparece este mensaje de error del parsererror es que cuando simplemente devuelve una cadena u otro valor, no es realmente Json , por lo que el analizador falla al analizarlo.

Entonces, si elimina la propiedad dataType: json , no intentará analizarla como Json .

Con el otro método, si se asegura de devolver sus datos como Json , el analizador sabrá cómo manejarlos correctamente.

about 3 years ago · Santiago Trujillo Report

0

Consulte la respuesta de @david-east para conocer la forma correcta de manejar el problema.

Esta respuesta solo es relevante para un error con jQuery 1.5 cuando se usa el archivo: protocolo.

Recientemente tuve un problema similar al actualizar a jQuery 1.5. A pesar de obtener una respuesta correcta, el controlador de errores se disparó. Lo resolví usando el evento complete y luego verificando el valor de estado. p.ej:

 complete: function (xhr, status) { if (status === 'error' || !xhr.responseText) { handleError(); } else { var data = xhr.responseText; //... } }
about 3 years ago · Santiago Trujillo Report

0

Ha especificado el tipo de datos de respuesta de llamada ajax como:

'json'

donde la respuesta ajax real no es un JSON válido y, como resultado, el analizador JSON arroja un error.

El mejor enfoque que recomendaría es cambiar el tipo de datos a:

'texto'

y dentro de la devolución de llamada exitosa, valide si se devuelve un JSON válido o no, y si la validación de JSON falla, avise en la pantalla para que sea obvio con qué propósito está fallando realmente la llamada ajax. Echa un vistazo a esto:

 $.ajax({ url: '/Admin/Ajax/GetViewContentNames', type: 'POST', dataType: 'text', data: {viewID: $("#view").val()}, success: function (data) { try { var output = JSON.parse(data); alert(output); } catch (e) { alert("Output is not valid JSON: " + data); } }, error: function (request, error) { alert("AJAX Call Error: " + error); } });
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error