0

我正在尝试为网站编写一个基本的转换程序。类别列表相当广泛,经过大量在线搜索后,最佳选择似乎是使用 JSON 和 Jquery,这对我来说都是相当新的。

目的是使用下拉菜单将值传递给 PHP 变量,根据该变量选择“类别”。在每个类别中都有子类别,然后在每个类别中都有各种转换单元。

一个例子是从菜单中选择的“基本”,“温度”作为子类别。单位是 C、F、K 等。然后用户可以输入一个值,单击按钮,瞧。

然而……一个;我希望它是可行的,而且 b; 我在使用 JSON 和 jQ 部分时遇到问题。

JSON的一个例子:

{
    "category" : "temp",
    "conversions":
    [{
        "value": "degC",
        "name" : "degC"
    },
    {
        "value": "kelvin",
        "name" : "kelvin"
    }],

    "category" : "area",
    "conversions":
    [{
        "value": "sqInch",
        "name" : "sqInch"
    },
    {
        "value": "sqYard",
        "name" : "sqYard"
    }]
}

我已经尝试了许多不同的选项和代码变体来尝试访问和返回结果。我能得到的最好结果是大量的 [object Object] 结果,或者在下面的示例中,最后一个类别显示得很好。

<script>
    $.getJSON('JSON/conversionJSON.json', function(data){

        var output="<ul>";

        for (var i in data.conversions){
            output+="<li>Name: " + data.conversions[i].name + " :Value: "
            + data.conversions[i].value +"</li>";
        }

        output+="</ul>";
        document.getElementById("testJSON").innerHTML=output;
    });
</script>

有什么明显的我想念的吗?我需要它是动态的,所以还不完全确定我将如何完成它,但如果我能让一个工作,那么希望我能在它的基础上再接再厉。任何建议、帮助或建议都将不胜感激。

谢谢。

4

2 回答 2

0
    {
    "sEcho": "1",
    "iTotalRecords": 77,
    "iTotalDisplayRecords": 77,
    "aaData" : [
                    {
                "DT_RowId": "_79",
                "DT_RowClass": "orp",
                "0": "",
                "1": "<a href='/app_dev.php/orp/79'></a>",
                "2": "",
                "3": "",
                "4": "",
                "5": "Unknown",
                "6": "<a href='/app_dev.php/orp/79'><img src='/bundles/porotcore/images/icons/pencil.png' alt='Show' title='Show' /></a><a href='/app_dev.php/orp/79/disable' class='ajax'><img src='/bundles/porotcore/images/icons/cog_delete.png' alt='Disable' title='Disable' /></a>"
            },                    {
                "DT_RowId": "_78",
                "DT_RowClass": "orp disabled",
                "0": "",
                "1": "<a href='/app_dev.php/orp/78'>CONSEILLERS INACTIFS</a>",
                "2": "",
                "3": "",
                "4": "",
                "5": "",
                "6": "<a href='/app_dev.php/orp/78'><img src='/bundles/porotcore/images/icons/pencil.png' alt='Show' title='Show' /></a><a href='/app_dev.php/orp/78/enable' class='ajax'><img src='/bundles/porotcore/images/icons/cog_go.png' alt='Enable' title='Enable' /></a>"
            }
]
}

and in twig file,
{% spaceless %}
{
    "sEcho": "{{ sEcho }}",
    "iTotalRecords": {{ iTotalRecords }},
    "iTotalDisplayRecords": {{ iTotalDisplayRecords }},
    "aaData" : [
        {% for orp in orps %}
            {
                "DT_RowId": "{{ '_' ~ orp.id }}",
                "DT_RowClass": "orp{{ orp.inactive ? ' disabled' : '' }}",
                "0": "",
                "1": "<a href='{{ path('orp_show', { id: orp.id }) }}'>{{ orp.name }}</a>",
                "2": "{{ orp.customerId ? orp.seminarCustomer.getName : '' }}",
                "3": "{{ orp.telephone }}",
                "4": "{{ orp.fax }}",
                "5": "{{ orp.cityId ? orp.city.name : '' }}"            }
{% if not loop.last %},{% endif %}
        {% endfor %}
    ]
}
{% endspaceless %}


*I am not sure but use of i inside loop is required
for (var i in data.conversions){
         output = i.sth;`enter code here`
}

My json data and twig file may help you*
于 2013-07-02T12:07:08.117 回答
0

这是我在我的一个项目中所做的,首先应该对您使用的 JSON 模式进行一些更改。您当前的架构没有将不同的categories内容放入不同的 JSONobjects中,所以我想出了这个新架构。以这种方式使用它的好处是您category只需调用即可达到预期目的data['categoryName']

这是一个小提琴

JSON:

{
    "temp" :    [
    {
        "value": "degC",
        "name" : "degC"
    },
    {
        "value": "kelvin",
        "name" : "kelvin"
    }],
    "area" : [
    {
        "value": "sqInch",
        "name" : "sqInch"
    },
    {
        "value": "sqYard",
        "name" : "sqYard"
    }]
}

然后javascript部分可以很容易地使用,如下所示:

<script>
$.getJSON('JSON/conversionJSON.json', function(data){
    var list=$("<ul />");
    $.each(data, function(key, conversions){
        $.each(conversions, function(index, conversion) {
            $("<li>Name: " + conversion.name + " :Value: " + conversion.value + "</li>").appendTo(list);
        });
    });
    $("#testJSON").html(output);
});
</script>
于 2013-07-02T12:10:56.453 回答