【问题标题】:List not being populated using jQuery with JSON data没有使用带有 JSON 数据的 jQuery 填充列表
【发布时间】:2014-02-07 21:54:36
【问题描述】:

我正在尝试使用 jQuery 使用 JSON 填充有序列表,但数据未添加到列表中。我将我的代码粘贴到 Fiddle 中,它似乎可以正常工作。

JavaScript 文件:

var data = {
    "product": [
        "Product 1",
        "Product 2",
        "Product 3"
    ],

    "company": [
        "Company 1",
        "Company 2",
        "Company 3"
    ],

    "contact": [
        "Contact 1",
        "Contact 2",
        "Contact 3"
    ]
};

$.each(data, function (key, value) {
    if (key === 'product') {
        for (var i = 0; i < value.length; i++) {
            var option = ('<li>' + value[i] + '</li>');
            $('#product').append(option);
        }
    }
    if (key === 'company') {
        for (var i = 0; i < value.length; i++) {
            var option = ('<li>' + value[i] + '</li>');
            $('#company').append(option);
        }
    }
    if (key === 'contact') {
        for (var i = 0; i < value.length; i++) {
            var option = ('<li id="new">' + value[i] + '</li>');
            $('#contact').append(option);
        }
    }
});

$('#cssmenu > ul > li > a').click(function () {
    $('#cssmenu li').removeClass('active');
    $(this).closest('li').addClass('active');
    var checkElement = $(this).next();

    if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
        $(this).closest('li').removeClass('active');
        checkElement.slideUp('normal');
    }

    if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
        $('#cssmenu ul ul:visible').slideUp('normal');
        checkElement.slideDown('normal');
    }

    if ($(this).closest('li').find('ul').children().length == 0) {
        return true;
    }
    else {
        return false;
    }
});

HTML:

<div id='cssmenu'>
    <ul>
        <li class='active'><a href='#'><span>Home</span></a>
        </li>

        <li class='has-sub'><a href='#'><span>Products</span></a>
            <ul id='product'>
            </ul>
        </li>

        <li class='has-sub'><a href='#'><span>Company</span></a>
            <ul id='company'>
            </ul>
        </li>

        <li class='last'><a href='#'><span>Contact</span></a>
            <ul id='contact'>
            </ul>
        </li>
    </ul>
</div>

这是 Fiddle 中的代码:

http://jsfiddle.net/9kW3X/12/

我目前在 Visual Studio 2010 中使用 Mobile Ready HTML5 MVC.NET 模板。

我在我的项目中使用了其他运行正常的 jQuery 代码,所以我怀疑这是源问题。

任何帮助将不胜感激。

【问题讨论】:

  • 我不确定这一点,但你应该重新搜索一下。我猜在 MVC.NET 中,您不能使用传统的 jQuery JSON 解析(我猜您正在使用 Ajax)。

标签: jquery html json html-lists


【解决方案1】:

你的 json 不正确。

http://jsfiddle.net/vsah/R3dcw/9/

var data = {
"data":{
    "product": [
    "product1",
    "product2",
    "produc3"],
    "company": [
    "company1",
    "company2",
    "company3"]
 }
}

$.each(data, function (key, value) {

if(value.product){
    var product = '<ul data-role="listview">'
    $.each(value.product, function (key, value) {
       product += '<li>'+value+'</li>';
    });
    $("#product").append(product).trigger('create');
}

if(value.company){
    var company = '<ul data-role="listview">'
    $.each(value.company, function (key, value) {
       company += '<li>'+value+'</li>';
    });
    $("#company").append(company).trigger('create');
 }


});

【讨论】:

  • 这在 Fiddle 中有效,但在 VS2010 中无效。我认为这可能与 HMTL 页面有关。这是我的 HTML 页面的样子(“Index.cshtml”):jsfiddle.net/R3dcw/12
  • 如我所说;它适用于 Fiddle,但不适用于 VS2010。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2018-03-02
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
相关资源
最近更新 更多