删除客户端的最后一个查询

时间:2017-05-22 17:57:45

标签: javascript jquery

我根据所选的单选按钮填充了一个下拉列表:

JS

 $(function getJsonProveedores() {
        var items = "";
        $('input[type=radio][name=editList]').change(function () {
            if (this.value == 'Proveedor') {
                $.getJSON("@Url.Action("GetProveedores", "Agenda")", function (data) {

                    $.each(data, function (index, item) {
                        items += "<option value='" + item.ID + "'>" + item.NombreComercial + "</option>";
                    });
                    $("#lstProveedor").html(items);
                });
            }
            else if (this.value == 'Sucursal') {
                $.getJSON("@Url.Action("GetUnidades", "Agenda")", function (data) {

                    $.each(data, function (index, item) {
                        items += "<option value='" + item.ID + "'>" + item.Nombre + "</option>";
                    });
                    $("#lstProveedor").html(items);
                });

            } else if (this.value == 'Usuario') {
                $.getJSON("@Url.Action("GetUsuario", "Agenda")", function (data) {

                    $.each(data, function (index, item) {
                        items += "<option value='" + item.ID + "'>" + item.Nombre + "</option>";
                    });
                    $("#lstProveedor").html(items);
                });
            }
        });

    });

它正确加载了所有JSON,但是删除上一个查询时出现问题,例如,如果我单击Proveedor无线电,则加载:

$.getJSON("@Url.Action("GetProveedores", "Agenda")"

然后如果我单击Sucursal radio,则加载

$.getJSON("@Url.Action("GetUnidades", "Agenda")"

问题是我一直看到

的第一个查询结果
$.getJSON("@Url.Action("GetProveedores", "Agenda")"

只获得第二个:

$.getJSON("@Url.Action("GetUnidades", "Agenda")"

控制器:

public ActionResult GetProveedores()
        {
            var listaProveedores = db.Proveedores.ToList();
            return Json(listaProveedores, JsonRequestBehavior.AllowGet);
        }

        public ActionResult GetUnidades()
        {
            var listaUnidades = db.Unidades.ToList();
            return Json(listaUnidades, JsonRequestBehavior.AllowGet);
        }

        public ActionResult GetUsuario()
        {
            var listaUsuarios = db.Usuarios.ToList();
            return Json(listaUsuarios, JsonRequestBehavior.AllowGet);
        }

那里有什么问题?此致

1 个答案:

答案 0 :(得分:1)

函数/变量的结构方式,items永远不会超出范围。所以永远不会重置。每个后续的AJAX调用都只是追加

相反,从当前范围中删除items变量,并在需要的每个范围内使用一个本地变量:

$(function getJsonProveedores() {
    $('input[type=radio][name=editList]').change(function () {
        if (this.value == 'Proveedor') {
            $.getJSON("@Url.Action("GetProveedores", "Agenda")", function (data) {
                var items = "";  // <--- declare it here
                $.each(data, function (index, item) {
                    items += "<option value='" + item.ID + "'>" + item.NombreComercial + "</option>";
                });
                $("#lstProveedor").html(items);
            });
        }
        else if (this.value == 'Sucursal') {
        // ... and so on, declaring an "items" in each scope where you need it