使用javascript解析url的codeigniter uri值

时间:2013-03-06 18:59:56

标签: javascript jquery codeigniter

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

我有一个名为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

当链接打开时,用户只有在用户功能运行我的支票时才能看到他的页面。这就是我无法删除或更改用户功能的原因,因为它需要读取URI数据并需要与我的getID函数分开

现在我的问题出现了。

我需要调用Site控制器中的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);
});

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

有人可以告诉我应该如何将此细分添加到网址中吗?我应该使用某种JS解析吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

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

<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->config->site_url()来生成网址...

答案 1 :(得分:0)

如果你想首先获得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();
            }
        });