没有按照我想要的方式获得json

Not getting json the way I want

本文关键字:方式获 json 我想要      更新时间:2023-09-26

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

以下是使用JSON.stringfy(测试):时的外观

{"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));
});

真的希望得到帮助。。。我被卡住了。提前感谢:-)

您使用的是一个数组。正如凯文指出的那样,这是行不通的。您需要声明一个需要键值对的对象文字。

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

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

在您的JavaScript代码中,您正在结果中创建一个数组,而不是一个对象。。。因此,您应该使用{}而不是使用[],您应该直接为对象的属性分配mytest["1"] = whatever,而不是使用.push。所以这里有一个修改后的代码形式。。。

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));
});

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

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

注意,我特意将var mytest移到ajax回调中,因为没有理由在外部定义它(它在回调之外不可用)