繁体   English   中英

无法解析json

[英]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.jsJSON.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM