none
POST http://localhost:/Controller/GetStates 500 (Internal Server Error) RRS feed

  • Pregunta

  • Hola, Saludos

    Disculpen tengo un problema en mi aplicación ASP.NET MVC, estoy utilizando jquery para cargar un combobox en la vista.

    1.Pasa lo siguiente, hace unas hrs funcionaba correctamente, pero instale mysql y reinicie el equipo y me encontre con el error siguiente POST http://localhost:/Controller/GetStates 500 (Internal Server Error)

    2. Este este mi codigo:

    Lo que logro localizar, es que al iniciar la pagina carga el metodo obtener_estado(), donde unas capas abajo estan los metodos que se conectan a la base de datos, para así llenar un <select> que se llama contrySel, todo se comunica a la misma altura, GetState esta en un controlador que manda a traer a la vista, por eso creo que todos se escuchan a la misma altura.

    $(document).on("ready", inicio);
    
    function inicio() { //inicializar funciones vitales para las paginas
        obtener_estados();
        obtener_ciudades();
    }
    
    function obtener_estados() { //Funcion para obtener la lista de paises
        $.post("GetStates", function (datos) {
            console.log(datos);
            $.each(datos, function (key, value) {
                $("#countrySel").append("<option value=" + value.ID + ">" + value.Nombre + "</option>");
            });
        }, "json");
    }
    
    function obtener_ciudades() {  //Funcion para obtener los estados de cada pais 
        $("#countrySel").change(function () {
            $("#cities option").remove();
            $("#cities").append('<option value="">Selecciona Ciudades</option>');
            var datos = {
                //accion: "obtener_estados",
                codigo: $(this).val()
            }
            //console.log(datos);
            //$.post("GetDataById($_POST['codigo'])", datos, function (datos) {
            $.post("GetDataByState", { es: $(this).val() }, function (datos) {
                console.log(datos);
                $.each(datos, function (key, value) {
                    $("#cities").append("<option value=" + value.ID + ">" + value.Nombre + "</option>");
                });
            }, "json");
    
        });
    }


    Controller:

    [HttpPost]
            [ValidateAntiForgeryToken]
            public JsonResult GetStates()
            {
                MvcSRDCBeta.Models.Ciudades obj = new MvcSRDCBeta.Models.Ciudades();
                List<Ciudades> Respuesta = var1.GetCitys();
                return Json(Respuesta, JsonRequestBehavior.AllowGet);
            }

    Clase a db:

       public List<Ciudades> GetCitys()
             {
                 List<Ciudades> lct = new List<Ciudades>();
                 using (SqlCommand cmd = new SqlCommand())
                 {
                     cmd.Connection = con;
                     cmd.CommandType = System.Data.CommandType.Text;
                     cmd.CommandText = "Select CodigoPostal,Estado from codigospostales";
                     con.Open();
                     SqlDataReader sdr = cmd.ExecuteReader();
                     while (sdr.Read())
                     {
                         Ciudades ct = new Ciudades();
                         ct.ID = Convert.ToInt32(sdr["CodigoPostal"]);
                         ct.Nombre = sdr["Estado"].ToString();
                        lct.Add(ct);
                     }
                     return lct;
                 }
             }

    el error aparece al cargar la pagina, lo pude visualizar en la consola del navegador POST http://localhost:3011/Catalogos/GetStates 500 (Internal Server Error)

    saludos y gracias



    domingo, 11 de octubre de 2015 2:45

Respuestas

  • una pregunta... Qué bbdd estás usando? Sql Server? MySql? Lo digo porque en tu método public List<Ciudades> GetCitys() empleas los componentes de acceso a datos de SqlServer. Ademas en dicho método de donde sale cmd.Connection = con;
                     la conexión??? Deberías instanciarla en un using{} como haces con el command.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    domingo, 11 de octubre de 2015 6:55
    Moderador