javascript:使用ajax字符串创建对象

时间:2015-02-25 14:27:15

标签: javascript ajax object

在javascript函数中,如果我设置:

var listnames = {
    "lista": {name: "ListA"},
    "listb": {name: "ListB"},
    "listc": {name: "ListC"},
};
console.log(listnames);

控制台显示:[object Object]。

但是,如果我在php中构建相同的文本并使用像这样的ajax检索它:

function set_listnames() {
    $.ajax({
        type:"POST",
        url: form_handler, // a php script
        data: '&action=get_listnames',
        dataType: 'json'
    })
    .done(function (data) {
        listnames = JSON.parse(data);
        console.log('listnames (after parse): ' + listnames);
    })
    .fail(function() {
        console.log ('failed');
    });

控制台中帖子的响应文字显示:" {\" lista \":{name:\" ListA \"},\&# 34;数组listB \":{名称:\"数组listB \"},\" listc \":{名称:\" listC \&#34 ;}}"

并在解析控制台后显示字符串(与上面的硬编码值相同): {" LISTA":{名称:"利斯塔"}"数组listB":{名称:"数组listB"}" listc& #34;:{名称:" ListC"}}

我需要将返回的字符串计算为[object Object],以便我使用的插件函数可以工作。

如何将ajax返回的字符串转换为对象?

2 个答案:

答案 0 :(得分:0)

您是100%确定第一个示例显示[object Object]?您在哪个浏览器中进行测试?

如果您确实需要将已解析的响应设为[object Object],则可以执行以下操作:

console.log( Object.prototype.toString.call( listnames ) );

但是,至于希望listnames成为一个对象......它已经是。

答案 1 :(得分:0)

来自服务器的密钥" name"没有引号。 应该是

{"name": "LisaA"}