0

我必须以这种格式输出 var sampleTags = ['c++', 'scala'];

我的javascript函数是:

 <script>
            $(document).ready(function(){
        $(function(){  
             var sampleTags;

            $.ajax({
                url:"<?php echo base_url('ajax_get_tags/gettags'); ?>"
            }).done(function(data) {
                if (data) {
                   sampleTags = data;
                }
            });
       ......................
        .......................



 $(function(){  
     var sampleTags = <?php echo json_encode($query) ?>;

我的 php 控制器是

   function gettags(){
    $json_array=$this->tagsmodel->get_all_tags(); 
   echo json_encode($json_array); 
 }

我的模型是

 //-------------------------------Function get all tags--------------------------------
function get_all_tags() { 
    $this->load->database();
    $this->db->limit('10');
    $this->db->select('tags_name');
    $res = $this->db->get('tags');
    $ret = array();

    foreach ($res->result_array() as $row) {
          $ret[] = $row['tags_name'];
    }

    return $ret;
}

如何从 ajax 请求中获取 json 输出以显示其对 javascript 变量的值?请帮我解决这个问题..

4

2 回答 2

0

您使用的是旧版本的 jQuery,因此.done无法正常工作。看起来您想向名为 的请求对象添加一个键complete,并将匿名函数作为其值:

$.ajax({
  url: "<?php echo base_url('ajax_get_tags/gettags'); ?>",
  complete: function(data) {
      if (data) {
          sampleTags = data;
      }
  }
});

我通过谷歌搜索您的错误消息发现了这一点。结果之一是这个问题:Object #<XMLHttpRequest> has no method 'done'。您可能只是在谷歌上搜索了错误消息并自己弄清楚了这一点。

于 2013-05-08T13:40:03.457 回答
-1

我想提几个建议

  1. 通过使用 die 或 exit 打印来检查服务器端的返回值。
  2. 检查 firebug net 选项卡中的 http 响应。3.
于 2013-05-08T13:37:44.060 回答