[英]Can not parse json
无法使用此解析json
var 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);
}
您应该始终避免使用eval
,这是邪恶的!
您有2个选择:
如果响应是字符串:
var res = JSON.parse(response);
或者它已经是一个JSON对象(例如,通过将ajax调用的返回类型设置为json)
var res = response;
那么您可以通过res[0].total_sections
访问全部部分。
编辑:您的代码有几个问题:
在id = document.getElementById('layoutDropdown').value;
之前添加var
id = document.getElementById('layoutDropdown').value;
。 旁注:您正在使用jQuery,因此这样访问起来更容易: $("#layoutDropdown").val();
您是否遇到alert(response)
? 如果不是,则您的ajax调用未成功。 您应该添加error
块以捕获错误: http : //api.jquery.com/jQuery.ajax/
做一个console.log(response)并检查结果。 它是否具有您想要的适当值? (您也可以为此检查ajax调用的主体)。
最有可能的是, eval(response)
或访问res[0].total_sections
是您麻烦所在。
尝试在较新的浏览器中使用JSON.parse(response)
。 对于较旧的浏览器,请使用json2.js和JSON.parse(response)
如果response
是一个string
,则可以使用var res = eval(response);
解析json var res = eval(response);
(但这不是很好), var res = JSON.parse(response);
或者,如果您使用jQuery var res = $.parseJSON(response)
。 否则,如果它已经是object
,则不需要解析它,只需设置var res = response;
。
现在,您可以通过调用res[0].total_sections
来获取总计部分,例如,您可以使用alert(res[0].total_sections);
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.