无法使用此
解析jsonvar res = eval('(' + response + ')');
response
包含[{"total_sections":"3"}]
此值。但我无法取值total_sections
。
function changeSection() {
id = document.getElementById('layoutDropdown').value;
$.ajax({ type: "POST",
url:'/manage',
data: {id : id },
success: function(response){
alert(response);
var res = eval(response);
alert(res[0].total_sections);
}
});
}
管理布局:
public function manageLayouts() {
$id = $_POST['id'];
$data = $this->managelayoutmodel->getSections($id);
echo json_encode($data);
}
答案 0 :(得分:1)
你应该总是尽量避免使用eval
,这是邪恶的!
您有两个选择:
如果响应是字符串:
var res = JSON.parse(response);
或者它是否已经是JSON-Object(例如通过设置ajax调用json的返回类型)
var res = response;
然后您可以按res[0].total_sections
访问所有部分。
编辑:您的代码有几个问题:
在var
之前添加id = document.getElementById('layoutDropdown').value;
。旁注:您正在使用jQuery,因此这样更容易访问:$("#layoutDropdown").val();
你遇到了alert(response)
吗?如果没有,你的ajax调用不成功。您应该添加error
阻止来捕获错误:http://api.jquery.com/jQuery.ajax/
执行console.log(响应)并检查结果。它是否具有您希望它具有的正确值? (你也可以检查ajax调用的主体)。
最有可能的是,eval(response)
和访问res[0].total_sections
都不是您遇到问题的部分。
答案 1 :(得分:0)
尝试在较新的浏览器中使用JSON.parse(response)
。对于旧版浏览器,请使用json2.js和JSON.parse(response)
答案 2 :(得分:0)
如果response
是string
,你可以使用var res = eval(response);
解析json(但不是很好),var res = JSON.parse(response);
或者使用jQuery var res = $.parseJSON(response)
}。否则,如果它已经是object
,您不需要解析它,只需设置var res = response;
现在,您可以致电res[0].total_sections
来获取所有部分,例如您可以使用alert(res[0].total_sections);
进行测试。