0

我正在尝试以特定方式发送或检索,不确定故障出在哪里...

以下是使用 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>'"]

我在开头需要大括号,并且 " 不在那里。

这是我发送和获取数据的方式。

测试.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));

});

真的希望得到帮助......我被困住了。提前致谢 :-)

4

3 回答 3

2

你正在使用一个数组。正如凯文所说,那是行不通的。您需要声明一个需要键值对的对象文字。

IE

var myTest = {}; 

$.each(data, function (i, val) {
  mytest[i] = val;
});

这是一个很好的更详细的解释。 如何将键/值对添加到 JavaScript 对象?

于 2013-07-17T18:34:14.363 回答
1

在您的 JavaScript 代码中,您在结果中创建了一个数组而不是一个对象......因此[],您应该使用{}而不是使用 .push,而不是使用 .push,您应该直接使用 .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));

});
于 2013-07-17T18:36:01.963 回答
1

您真正想要的很可能只是一个对象。

var mytest = {};
$.each(data, function (i, val) {
    mytest[val.id] = "<div class='test'>"+val.name+"</div>";
})

请注意,我故意移到var mytestajax 回调中,因为没有理由在外部定义它(它在回调之外无法使用)

于 2013-07-17T18:35:38.077 回答