我试图以特定的方式发送或检索,不确定故障的位置......
以下是使用JSON.stringify(test)时的外观:
{"1":"<div class=\"test\">test1</div>","2":"<div class=\"test\">test2</div>","1":"<div class=\"test\">test1</div>"}
但是我的ajax / json返回看起来像这样:
["'1':'<div class='test'>test1</div>'","'2':'<div class='test'>test2</div>'","'3':'<div class='test'>test3</div>'"]
我在开头需要大括号,“不要在那里。”
以下是我发送和获取数据的方式。
test.php的
$test = array();
$test[] = array('id' => '1', 'name' => 'test1');
$test[] = array('id' => '2', 'name' => 'test2');
$test[] = array('id' => '3', 'name' => 'test3');
echo json_encode($test);
检索它的javascript:
var mytest = [];
$.getJSON('test.php', function(data){
$.each(data, function (i, val) {
mytest.push("'"+val.id+"':'<div class='test'>"+val.name+"</div>'");
});
alert(JSON.stringify(mytest));
});
真的希望得到帮助......我被困住了。在此先感谢: - )
答案 0 :(得分:2)
即
var myTest = {};
$.each(data, function (i, val) {
mytest[i] = val;
});
这是一个很好的,更详细的解释。 How can I add a key/value pair to a JavaScript object?
答案 1 :(得分:1)
你最想要的只是一个对象。
var mytest = {};
$.each(data, function (i, val) {
mytest[val.id] = "<div class='test'>"+val.name+"</div>";
})
注意,我故意将var mytest
移动到ajax回调中,因为没有理由在外面定义它(它在回调之外不可用)
答案 2 :(得分:1)
在您的JavaScript代码中,您在结果中创建了一个数组而不是对象...因此,您应该使用[]
而不是使用.push,而不是使用{}
应直接使用mytest["1"] = whatever
分配对象的属性。所以这是修改后的代码形式......
var mytest = {};
$.getJSON('test.php', function(data){
$.each(data, function (i, val) {
mytest[val.id] = '<div class="test">'+val.name+'</div>';
});
alert(JSON.stringify(mytest));
});