none
¿Error la longitud supera el valor establecido en la propiedad maxJsonLength? RRS feed

  • Pregunta

  • Tengo una consulta y es la siguiente:

      Tengo un método que lista nombres de los trabajadores y posteriormente con ajax lo almaceno en un autocomplete UI en javascript, pero me aparecido un error que dice lo siguiente:

    Error durante la serialización o deserialización mediante JavaScriptSerializer de JSON. La longitud de la cadena supera el valor establecido en la propiedad maxJsonLength.

    Este es mi código

    public List<Empleado> ListarEmpleadoAutocompletable()
            {
                List<Empleado> lista = new List<Empleado>();
    
                DatabaseHelper helper = null;
                SqlDataReader dr = null;
                try
                {
                    helper = new DatabaseHelper(Conexion.Instancia.CadenaConexionDS());
    
                    /*No me aparece esta clase JavaScriptSerializer por más que habilite en references> system.web.extension
    JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    serializer.MaxJsonLength = 500000000;*/
    
                    dr = (SqlDataReader)helper.ExecuteReader(
                        "select Id_Externo,Nombre + ' ' + Apellido_Paterno + ' ' + apellido_Materno as 'NOMBRES' from empleado ", System.Data.CommandType.Text);
                    while (dr.Read())
                    {
    
                        var objEmpleado = new Empleado()
                        {
                            IdExterno = dr["Id_Externo"].ToString(),
                            Nombre = dr["NOMBRES"].ToString()
                        };
                        lista.Add(objEmpleado);
                    }
    
                }
                catch (Exception ex)
                {
                    throw ex;
    
                }
                finally
                {
                    if (helper != null)
                        helper.Dispose();
                }
                return lista;
            }

    Mi Javascript

    init_autocomplete: function () {
                $.ajax({
                    url: root + "MantEmpleado/ListaEmpleadoAutocompletable",
                    type: 'GET',
                    dataType: "json",
                    success: function (json) {
                        MantEmpleados.carga_autocompletado(json.data);
                    },
                    error: function (err) {
                        console.log("error");
                    }
                });
    
            }

    y esta configuración en el web.config no me funciona.

    <system.web.extensions>
        <scripting>
          <webServices>
            <jsonSerialization maxJsonLength="5000000"></jsonSerialization>
          </webServices>
        </scripting>
      </system.web.extensions>
    Agradecería me pudieran ayudar.

    lunes, 13 de enero de 2020 15:09

Todas las respuestas

  • hola

    >>posteriormente con ajax lo almaceno en un autocomplete UI en javascript,

    pero un autocomplete no se realiza enviando todo los datos al cliente

    Se supone que filtres a medida que se escribe y despues envias un cierto numero de items

    Por lo general se envia el request al servidor cuando se ingresaron 2 o mas carateres y si los registros son miles se limite a un numero x la cantidad que se lista

    No deberias aplicarlo como tu lo haces, cuando invocas por ajax al servicio donde envias que caracteres se ingresaron para aplicar el filtro? debes poder aplicar un

    SELECT ...  WHERE campo LIKE @param + '%'

    para filtrar a medida que se escribe, asi no superaras nunca el limite de la serializacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de enero de 2020 15:27
  • Entonces como lo recibiría en el ajax para que automáticamente me cargue la data que deseo.
    lunes, 13 de enero de 2020 15:44
  • >>como lo recibiría en el ajax para que automáticamente me cargue la data que deseo.

    Debes pasarle el dato del textbox donde el usuario va escribiendo, no va en ningun init_autocomplete

    Implement jQuery AutoComplete TextBox from database using AJAX PageMethods in ASP.Net

    analiza el articulo como define el "data" de $.ajax para enviar el valor que usa en el WHERE de la consulta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de enero de 2020 15:48