在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返回的字符串转换为对象?
答案 0 :(得分:0)
您是100%确定第一个示例显示[object Object]
?您在哪个浏览器中进行测试?
如果您确实需要将已解析的响应设为[object Object]
,则可以执行以下操作:
console.log( Object.prototype.toString.call( listnames ) );
但是,至于希望listnames
成为一个对象......它已经是。
答案 1 :(得分:0)
来自服务器的密钥" name"没有引号。 应该是
{"name": "LisaA"}