-2

我有控制器

var subCategories = m_listsRepository.GetSubCategories(id);
var items = subCategories.Select(x=>new MyDataNameAndId(){Id = x.Value, Name = x.Text});
return Json(items);

和阿贾克斯:

$.ajax({
        url: urlString,
        type: 'POST',
        data: JSON.stringify({ id: districtId }),
        dataType: 'json',
        contentType: 'application/json',
        cache: 'false',
        success: function (data) {
            alert("success");
            $.each(data, function (key, MyDataNameAndId) {
                alert(key);//== 0
                alert(MyDataNameAndId);// then throws
                $('select#ChangeOnsubCategoryId').append('<option value="0">Select One</option>');

                $.each(MyDataNameAndId, function (index, manager) {
                    $('select#ChangeOnsubCategoryId').append(
                            '<option value="' + manager.Id + '">'
                            + manager.Name +
                            '</option>');
                });
            });
        }
    });

我究竟做错了什么?

更新: 控制器工作。警报(“成功”);- 是显示警报(键);- 显示 0 警报(MyDataNameAndId);- 不显示。我需要在 select#ChangeOnsubCategoryId 的“select#ChangeOnsubCategoryId”选项中生成

这是怎么做的?这个明白吗?

我不知道如何显示通过 json 的内容

json字符串:

[{"Id":"53","Name":"футбол"}]
4

2 回答 2

0

从您写出的 JSON 输出中,我会像这样重写它:

$.ajax({
    url: urlString,
    type: 'POST',
    data: JSON.stringify({ id: districtId }),
    dataType: 'json',
    contentType: 'application/json',
    cache: 'false',
    success: function (data) {
        if (!data) return; // if data is empty, return

        var $select = $('select#ChangeOnsubCategoryId');
          // put the select element in a variable so you don't need to
          // jquery select it again

        $select.append('<option value="0">Select One</option>');
          // I guess you first want to add a "select one" option

        // data should be an array e.g. [{"Id":"53","Name":"футбол"}]
        $.each(data, function (key, manager) {
           // for each "manager" in the "data" array

           // manager should be an object in the data
           // array e.g. {"Id":"53","Name":"футбол"}
           // no need to for each it

           $select.append(
                    '<option value="' + manager.Id + '">'
                    + manager.Name +
                    '</option>');
             // add the manager in the select box
        });
    }
});

我假设的东西。使用 javascript 调试器(例如 Chrome 中的开发人员工具或 Firefox 中的 Firebug)来检查您从 ajax 调用中获得的值。将断点放在函数中,然后观察数据变成了什么(在这种情况下,它应该是一个包含 Id 和 Name 的对象数组)。

于 2012-04-13T11:04:11.523 回答
0
$.each(MyDataNameAndId, function (index, manager) {
                $('select#ChangeOnsubCategoryId').append(
                        '<option value="' + manager.Id + '">'
                        + manager.Name +
                        '</option>');
            });

应该只是

$('select#ChangeOnsubCategoryId').append(
         '<option value="' + MyDataNameAndId.Id + '">'
         + MyDataNameAndId.Name +
         '</option>');

示例代码毫无例外地对我有用,这让我相信返回的 JSON 有问题。检查它是否实际返回您发布的字符串。

于 2012-04-13T11:08:08.107 回答