Codeigniter - 在成功后访问 ajax 上的 json 数据


Codeigniter - Accessing json data on ajax post success

<label>Group Name</label>
   <select id="group" name="groupName">
     <option value="0">Select Group Name</option>
     <?php foreach ($userGroup as $item) { ?>
     <option value="<?= $item->notificationGroupID ?>"><?= $item->groupName ?></option>
     <?php } ?>
   </select>
<br></br>

这是我从数据库中填充的下拉列表,当我在下拉列表中选择任何选项时,它会触发以下 ajax 帖子

jQuery(document).ready(function(){
  $("#group").change(function() {
  var group_ids = {"grp_ids" : $('#group').val()};
    $.ajax({
    type: "POST",
    data: group_ids,
    url: "<?= base_url() ?>pushnotification_group_wise/group_wise_skyid",
    success: function(data){
    console.log(data);
         }
       });
     });
  });

现在,在控制器"pushnotification_group_wise"(因为我正在使用代码点火器)内的方法"group_wise_skyid"中,正在执行以下代码。

  public function group_wise_skyid()
  {
    if(isset($_POST['grp_ids']))
    {
      $skyid['sky_id'] = json_encode($this->pushnotification_model->get_group_eblskyids($_POST['grp_ids']));
      echo $skyid['sky_id'];
    }

这是调用模型函数并返回一些我正在回显的数据。现在在ajax帖子的成功功能中,当我做控制台.log(数据)我在控制台中得到以下内容

    [{"mapID":"17","notificationGroupId":"3","eblskyId":"eblsky33"},{"mapID":"18","notificationGroupId":"3","eblskyId":"eblsky44"}]

采用 JSON 格式。现在我需要访问要特定的数据,我需要访问

  notificationGroupId
  eblskyId

这是 JSON 字符串的两个字段。现在我应该将整个 json 字符串存储在一个变量中,然后以某种方式访问,或者我该怎么做。

谢谢

稍微

修改一下你的方法:

$this->output
    ->set_content_type("application/json")
    ->set_output( json_encode($this->pushnotification_model->get_group_eblskyids($_POST['grp_ids'])) );

而不是echo $skyid['sky_id'];

现在只接受您在 Ajax 请求中设置dataType JSON数据:

$.ajax({
    type: "POST",
    data: group_ids,
    url: "<?= base_url() ?>pushnotification_group_wise/group_wise_skyid",
    dataType: 'json', 
    success: function(data){
        $.each(data, function(i, data) {
            console.log('notificationGroupId - ', data.notificationGroupId);
            console.log('eblskyId - ', data.eblskyId);
        });
     }
   });

根据您的需要处理它。

[{"mapID":"17","notificationGroupId":"3","eblskyId":"eblsky33"},{"mapID":"18","notificationGroupId":"3","eblskyId":"eblsky44"}]

这是一个对象数组。此数组由 2 个对象组成。

我假设,这个数组的名称是数据

要访问第一个对象,您可以这样做:

data[0].mapID will return "17"
data[0].notificationGroupId will return "3"
data[0].eblskyId will return "eblsky33"

数据数组的其他索引相同

使用 $.each 通过这个你可以访问数据中的所有东西

在您的情况下,它是对象数组

var data = [{
  "mapID": "17",
  "notificationGroupId": "3",
  "eblskyId": "eblsky33"
}, {
  "mapID": "18",
  "notificationGroupId": "3",
  "eblskyId": "eblsky44"
}]
$.each(data, function(index, value) {
  alert(value.notificationGroupId);
  alert(value.eblskyId);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

保存 s 字符串

使用 toString()

var str_data=data.toString()// you get as a string 
您的

响应是一个字符串,而不是一个 JSON 对象。

你必须使用 data = JSON.Parse(data);

现在你有一个JSON对象,然后你可以参考@Rituraj ratan给出的答案

$.each(data, function(index, value) {
  alert(value.notificationGroupId);
  alert(value.eblskyId);
});