当前位置: 首页 > 面试题库 >

使用JSON结果填充下拉列表-使用MVC3,JQuery,Ajax,JSON级联DropDown

奚高扬
2023-03-14
问题内容

我已经使用mvc进行了级联淹没。就像这样,如果您在第一个下拉列表中选择一个国家,则应该相应地填充第二个国家的状态。

此刻,一切似乎都很好,我得到了Json的响应(使用F12工具看到了它),它看起来像 [{ "stateId":"01", "StateName": "arizona" } , { "stateId" : "02", "StateName":"California" }, etc..] ..

我想知道如何second-dropdown用这些数据填充我的数据。我的第二个下拉菜单的ID是“ StateID”。任何帮助将不胜感激。

以下是用于从服务器生成JSON响应的代码:

[HttpPost]
public JsonResult GetStates(string CountryID)
{
    using (mdb)
    {
        var statesResults = from q in mdb.GetStates(CountryID)
                        select new Models.StatesDTO
                        {
                            StateID = q.StateID,
                            StateName = q.StateName
                        };

        locations.statesList = stateResults.ToList();
    }

    JsonResult result = new JsonResult();

    result.Data = locations.statesList;

    return result;
}

下面是客户端HTML,我的剃刀代码和我的脚本。我想在“ success:” 内写一些代码,以便它dropdown用JSON数据填充状态。

<script type="text/javascript">
    $(function () {
        $("select#CountryID").change(function (evt) {

            if ($("select#CountryID").val() != "-1") {

                $.ajax({
                    url: "/Home/GetStates",
                    type: 'POST',
                    data: { CountryID: $("select#CountryID").val() },
                    success: function () { alert("Data retrieval successful"); },
                    error: function (xhr) { alert("Something seems Wrong"); }
                });
            }
        });
    });
</script>

问题答案:

首先,内部的一个jQuery事件处理函数this是指触发事件的元素,这样你就可以取代额外调用$("select#CountryID")$(this)。尽管应该尽可能直接访问元素属性,而不是使用jQuery函数,所以您可以简单地执行this.value而不是$(this).val()or
$("select#CountryID").val()

然后,在AJAX调用success函数内部,您需要创建一系列<option>元素。可以使用基本jQuery()功能(或$()简称)来完成。看起来像这样:

$.ajax({
    success: function(states) {
        // states is your JSON array
        var $select = $('#StateID');
        $.each(states, function(i, state) {
            $('<option>', {
                value: state.stateId
            }).html(state.StateName).appendTo($select);
        });
    }
});

这是一个jsFiddle演示。

相关的jQuery文档:

  • jQuery.each()
  • jQuery()


 类似资料:
  • 问题内容: 就像标题中所说的那样,尽管我对尚未付诸实践的理论很熟悉,但我仍在尝试使用jQuery,JSON和AJAX创建下拉菜单,因此,任何建议,演示代码段或教程都将不胜感激,因为我想开始最好的开始! 提前感谢! 问题答案: 您需要执行$ .getJSON调用以从document.load或其他一些事件http://api.jquery.com/jQuery.getJSON/上的服务器中获取jso

  • 问题内容: 我有以下jQuery代码。我可以从server获得以下数据。我该如何对此进行迭代,并用 另外,使用和之间有什么区别。 问题答案: 这应该可以解决问题: 这里的区别和(从jQuery的文档): [getJSON]是Ajax的简写功能,等效于: 编辑:要明确,部分问题是服务器的响应返回的是如下所示的json对象: …因此该属性需要使用手动解析。

  • 问题内容: 我知道在这个问题上有很多问题,但是我仍然不确定该怎么做。 我有一个名为“ CuisineForm”的HTML表单,在用户选择了美食类型之后,AJAX将该表单发送到服务器。AJAX调用工作正常,并且服务器以JSON响应进行响应,其中包含此特定美食的所有服务时间。这些服务时间分为早餐,午餐和晚餐。 这些时间需要以相同的形式填充到3个单独的下拉菜单中。 但我真的不知道如何处理JSON结果以填

  • 问题内容: 我有以下问题: 我开始用HTML和JS创建表单,并且有两个下拉菜单(国家和城市)。现在,我想使用JQuery使这两个动态,以便仅显示所选国家/地区的城市。 我从一些基本的JS入手,但效果不错,但在IE中却有些麻烦。现在,我正在尝试将JS转换为JQuery,以获得更好的兼容性。 我原来的JS看起来像这样: 我知道这很简单,但是我看不到树木的木头。 问题答案: 它应该像

  • 问题内容: 我设法用json对象填充下拉菜单,效果很好。目前,我正在尝试根据从下拉菜单中选择的选项显示隐藏div中的图像。当下拉列表由json对象填充时,我将如何检索图像数据。 HTML JSON文件 这就是我使用jquery填充下拉菜单的方式。 jfiddle中任何有效的示例,将不胜感激!谢谢。 问题答案: 现场演示

  • 问题内容: 我想知道如何使用JSON填充表单吗? 我有一个使用php的JSON字符串, 并且我想使用JSON字符串填充表单控件(例如textarea或文本输入)。 我如何不使用外部插件(例如jQuery populate插件,我就看到了)来实现这一目标。 编辑:JSON格式: 这就是我从json_encode()得到的 问题答案: 此处存在问题,然后将其更改为开关值 使用它来为许多控件分配值: