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

时间:2014-12-15 06:23:19

标签: php ajax json

<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”中(因为我正在使用codeigniter),以下代码正在执行。

  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 post的成功函数中,当我做console.log(数据)时,我在控制台中得到以下内容

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

是json格式。现在我需要访问特定的数据,我需要访问

  notificationGroupId
  eblskyId

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

由于

4 个答案:

答案 0 :(得分:0)

[{"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"

与数据数组的其他索引相同

答案 1 :(得分:0)

使用$.each,您可以访问数据中的所有内容

在你的情况下它是对象数组

&#13;
&#13;
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);


});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

保存字符串

使用 toString()

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

答案 2 :(得分:0)

您的Response是一个字符串而不是JSON对象。

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

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

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

答案 3 :(得分:0)

稍微修改你的方法:

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

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

现在只接受JSON数据,只需在Ajax请求中设置dataType

$.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);
        });
     }
   });

根据您的需要处理它。