Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将JSON内部元素彼此分离_Jquery_Json - Fatal编程技术网

Jquery 将JSON内部元素彼此分离

Jquery 将JSON内部元素彼此分离,jquery,json,Jquery,Json,鉴于我无法更改输出此JSON的服务器端代码: [ { test_id: "1", test_name: "Diagnostic Test 1" }, { test_id: "2", test_name: "Test 1" }, { test_id: "3", test_name: "Test 2" } ] 创建按钮的最佳方法是什么?其中值是内部元素的第一部分,而按钮上显示的实际文本是内部元素的第二部分 <div id

鉴于我无法更改输出此JSON的服务器端代码:

[
  {
    test_id: "1",
    test_name: "Diagnostic Test 1"
  },
  {
    test_id: "2",
    test_name: "Test 1"
  },
  {
    test_id: "3",
    test_name: "Test 2"
  }
]
创建按钮的最佳方法是什么?其中值是内部元素的第一部分,而按钮上显示的实际文本是内部元素的第二部分

<div id="testList">
   <button value="test_id">test_name</button>
   <button value="test_id">test_name</button>
   <button value="test_id">test_name</button>
</div>

测试名称
测试名称
测试名称
目前我正在这样做:

$.getJSON( "tests.json", "json" )
    .done(function(data) {
        $.each(data, function(){
            $.each(this, function(name, value){
                $("#testList").append('<button>'+ value +'</button>');
            })
        })
    });
$.getJSON(“tests.json”,“json”)
.完成(功能(数据){
$.each(数据,函数(){
$.each(此,函数(名称,值){
$(“#测试列表”)。追加(“”+value+“”);
})
})
});
它分别输出按钮:

<div id="testList">
    <button>1</button>
    <button>Diagnostic Test 1</button>
    <button>2</button>
    <button>Test 1</button>
    <button>3</button>
    <button>Test 2</button>
</div>

1.
诊断测试1
2.
测试1
3.
测试2

记住:我无法更改JSON

删除内部
$。每个
-外部循环寻址
数据
可以访问每个对象的两个属性:

$.getJSON( "tests.json", "json" )
    .done(function(data) {
        $.each(data, function(i, d){
            $("#testList").append('<button value="' + d.test_id + '">'+ d.test_name+'</button>');
        })
    });
$.getJSON(“tests.json”,“json”)
.完成(功能(数据){
$。每个(数据、函数(i、d){
$(“#测试列表”).append(“”+d.test_name+“”);
})
});
请注意,这并不是一种生成元素的完全健壮的方法,这取决于您对数据源的信任程度以及它们是否应该只包含纯文本。类似于以下内容的内容会更好:

var b = $('<button>');
b.val(d.test_id);
b.text(d.test_name);
$("#testList").append(b);
var b=$('');
b、 val(d.测试id);
b、 文本(d.测试名称);
$(“#测试列表”)。附加(b);
$.getJSON(“tests.json”、“json”)
.完成(功能(数据){
$.each(此,函数(ind,元素){
$(“#testList”).append(element.test_id+''+element.test_name+'');
})
});

非常感谢-非常有效。将在超过时间限制时接受请注意,这并不完全可靠-理想情况下,您希望根据您对数据源的信任程度,退出
test\u id
test\u name
。我们进行了编辑以反映这一点。
$.getJSON( "tests.json", "json" )
    .done(function(data) {

            $.each(this, function(ind,element){
                $("#testList").append(element.test_id + '<button>'+ element.test_name+'</button>');
            })

    });