首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JQuery/Ajax的级联下拉菜单重复第一个表行返回数据

使用JQuery/Ajax的级联下拉菜单重复第一个表行返回数据
EN

Stack Overflow用户
提问于 2019-04-20 21:29:31
回答 1查看 106关注 0票数 0

我使用Jquery/Ajax来返回基于级联下拉列表的数据。当选择select1时,它会填充select2。该功能似乎工作得很好,但是select2返回的数据是重复x次的第一行的值,即返回的行数。为什么会发生这种情况?

DBContext:

代码语言:javascript
运行
复制
public class FulfillmentContext : DbContext
{
    public FulfillmentContext()
        : base("name=FulfillmentContext")
    {
    }

    public virtual DbSet<Carrier> Carriers { get; set; }
    public virtual DbSet<Fulfillment> Fulfillments { get; set; }
    public virtual DbSet<CarrierService> CarrierServices { get; set; }
}

控制器:

代码语言:javascript
运行
复制
public class FulfillmentController : Controller
{
FulfillmentContext db = new FulfillmentContext();

//GET Fulfillment
public ActionResult Index()
{
    return View();
}

public JsonResult GetCarriers()
{
    return Json(db.Carriers.ToList(), JsonRequestBehavior.AllowGet);
}

public JsonResult GetServicesByCarrierId(string carrierId)
{
    int Id = Convert.ToInt32(carrierId);

    try
    {
        var services = db.CarrierServices.Where(s => s.CarrierId == Id).ToList();

        return Json(services);
    }
    catch (Exception e)
    {
        Debug.WriteLine("ERROR: " + e.Message);
        throw;
    }                        
}      
}

查看:

代码语言:javascript
运行
复制
<div class="panel panel-primary">
<div class="panel-heading">REPORT OPTIONS</div>
<div class="panel-body" style="padding-left:35px;">
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.Label("Carrier:")
@Html.DropDownList("carriers", new SelectList(string.Empty, "Value", "Text"), "Select a Carrier", new { @class = "form-control", @style = "width: auto; margin: 0 0 25px 0;" })

@Html.Label("Carrier Services:")
@Html.DropDownList("services", new SelectList(string.Empty, "Value", "Text"), "Select a Service", new { @class = "form-control", @style = "width: auto; margin: 0 0 25px 0;" })
</div>
}
</div>
</div>
</div>
@section scripts{
<script src="~/assets/scripts/form-plugin.js"></script>
<script>
$(function () {
$.ajax({
type: "GET",
url: "/Fulfillment/GetCarriers",
datatype: "Json",
success: function (data) {
    $.each(data, function (index, value) {
        $('#carriers').append('<option value="' + value.CarrierId + '">' + value.CarrierName + '</option>');
    });
}
});

$('#carriers').change(function () {

$('#services').empty();

$.ajax({
    type: "POST",
    url: "/Fulfillment/GetServicesByCarrierId",
    datatype: "Json",
    data: { CarrierId: $('#carriers').val() },
    success: function (data) {
        $.each(data, function (index, value) {
            $('#services').append('<option value="' + value.Code + '">' + value.WebName + '</option>');
        });
    }
});
});

});
}

CONSOLE.LOG(数据)

代码语言:javascript
运行
复制
(7) […]
​
0: {…}
​​
CarrierId: 1
​​
Code: "1DM"
​​
Description: "UPS Next Day Air® Early"
​​
SortOrder: 2
​​
WebName: "UPS Next Air Early"
​​
<prototype>: Object { … }
​
1: Object { CarrierId: 1, Code: "1DM", Description: "UPS Next Day Air® Early", … }
​
2: Object { CarrierId: 1, Code: "1DM", Description: "UPS Next Day Air® Early", … }
​
3: Object { CarrierId: 1, Code: "1DM", Description: "UPS Next Day Air® Early", … }
​
4: Object { CarrierId: 1, Code: "1DM", Description: "UPS Next Day Air® Early", … }
​
5: Object { CarrierId: 1, Code: "1DM", Description: "UPS Next Day Air® Early", … }
​
6: Object { CarrierId: 1, Code: "1DM", Description: "UPS Next Day Air® Early", … }
​
length: 7
EN

回答 1

Stack Overflow用户

发布于 2019-04-20 23:56:31

在使用$('#services').empty()从Ajax数据中追加数据之前,需要清除select标记

代码语言:javascript
运行
复制
success: function (data) {
        $('#services').empty();
        $.each(data, function (index, value) {
            $('#services').append('<option value="' + value.Code + '">' + value.WebName + '</option>');
        });

脚本更改为:

代码语言:javascript
运行
复制
$(function () {
$.ajax({
type: "GET",
url: "/Fulfillment/GetCarriers",
datatype: "Json",
success: function (data) {
    $.each(data, function (index, value) {
        $('#carriers').empty();
        $('#carriers').append('<option value="' + value.CarrierId + '">' + value.CarrierName + '</option>');
    });
}
});

$('#carriers').change(function () {

$('#services').empty();

$.ajax({
    type: "POST",
    url: "/Fulfillment/GetServicesByCarrierId",
    datatype: "Json",
    data: { CarrierId: $('#carriers').val() },
    success: function (data) {
        $('#services').empty();
        $.each(data, function (index, value) {
            $('#services').append('<option value="' + value.Code + '">' + value.WebName + '</option>');
        });
    }
});
});

});
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55774006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档