【问题标题】:Parsing url with javascript for codeigniter uri value使用 javascript 解析 url 以获取 codeigniter uri 值
【发布时间】:2013-03-08 10:19:33
【问题描述】:

我遇到了一种情况,希望能得到一些帮助。

我有一个名为 Site 的控制器,其功能如下:

function getID(){
    $id_data = $this->uri->segment(3);
    $name = $this -> session -> userdata('name');
    echo json_encode($this -> getID_model -> getID($id_data,$name ));
}

我的网址如下所示

 http://myapp.com/index.php?/site/user/96

当链接打开时,用户只有在用户函数运行了我的检查后才能看到他的页面。这就是为什么我不能删除或更改 User 函数的原因,因为它需要读取 URI 数据并且需要与我的 getID 函数分开

这就是我的问题所在。

我需要调用站点控制器中的 getID 函数,它需要第三个 URI id 号。

下面是我的 JQuery

    var fullurl = $('#hiddenurl').val() + 'index.php?/site/getID/';

$.getJSON(fullurl, function(json) {
    $.each(json, function(i,d) {
        //do my output stuff.
    });
    $('#_description').append(output);
});

这不起作用,因为控制器需要第三个 URI 段。

谁能告诉我应该如何将此段添加到网址中?我应该使用某种 JS 解析吗?

谢谢。

【问题讨论】:

  • 直到今天我还是不明白为什么人们尝试使用 uri->segment 功能而不是可读功能。
  • function getID($id){ echo json_encode($this->getID_model->getID($id,$this->session->userdata('name'))); }
  • @skrilled 所以将参数传递给 getID 函数?然后呢?你能解释一下吗?
  • 在控制器中: public function user($userid = false) { if($userid) $data = $this->getID_model->getID($userid,$this->session->userdata( '姓名')); }
  • 是的,您应该将参数传递给 getID 函数。

标签: javascript jquery codeigniter


【解决方案1】:

您确定可以访问(或可以访问)在您呈现“#hiddenurl”元素的视图中的$id_data 变量吗?你可以这样做:

<input type="hidden" name="whatever" id="whatever" value="<?php echo site_url("site/getID/$id_data"); ?>">

然后,您将可以轻松访问要在 getJSON() 调用中使用的整个 URL。

var my_url = $('#whatever').val();
// Now my_url should contain something like http://example.com/index.php/site/getID/123

注意:如果你已经加载了CodeIgniter的url helper,你只能使用site_url()而不是更长的$this-&gt;config-&gt;site_url()来生成URL...

【讨论】:

    【解决方案2】:

    如果你想获得 json 拳头,你需要发送 json 而不是纯文本

    function getID(){
     header('Cache-Control: no-cache, must-revalidate');
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Content-type: application/json');
    
    
     $id_data = $this->uri->segment(3);
        $name = $this -> session -> userdata('name');
        echo json_encode($this -> getID_model -> getID($id_data,$name ));
    }
    

    这对于 js

    var valueofsometing=$('#someitng').val();
    var base_url = <?=base_url()?>
      jQuery.ajax({
                url:base_url + "/site/getID/" + valueofsometing,
                async:false,
                type:'GET',
                cache:false,
                timeout:30000,
                success:function (result) {
                    $('#joblist').append(result);
                    $("select.workflow_class").last().uniform()
                    initdrag();
                }
            });
    

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 2013-01-05
      • 2023-03-08
      • 2012-09-07
      • 1970-01-01
      • 2023-03-17
      • 2014-12-18
      • 2012-03-28
      • 2016-11-29
      相关资源
      最近更新 更多