Как получить сегмент URI из представления CodeIgniter, в котором сделан запрос Ajax? - PullRequest
0 голосов
/ 29 января 2012

Я использую jQuery для вызова метода моего «добровольного» контроллера CodeIgniter из представления, называемого «edit», которое принимает один параметр, «id»

URI вида: volunteer/edit/3

Я делаю вызов моего update() метода следующим образом:

$.post('volunteer/update', function(data) {
    console.log(data);
});                 

Все, что сейчас делает метод, это повторяет сегмент URI:

public function update(){
    echo $this->uri->segment(2, 0);
}

То, что нужно, - это сегмент URI представления, где вызывается update() (представление «edit»). Вместо этого я получаю сегмент URI update(). Как получить сегмент URI вида редактирования, чтобы использовать его в методе update()?

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Вы можете получить URL-адрес реферера, используя

$_SERVER['HTTP_REFERER']

, а затем проанализировать его вручную, чтобы получить свой сегмент.

Это не на 100% безопасно, так как его можно переопределить (его наборв качестве заголовка сервером).

Более подробная информация об этой старой записи

0 голосов
/ 30 января 2012

Вам нужно будет передать значение сегмента в данных POST вызова AJAX.

Ваши варианты:

1) Вы можете проанализировать URL с помощью JavaScript, чтобы определить значение сегмента, например:

<script>
var postData;
// assign whatever other data you're passing in
postData.lastSegment = window.location.href.substr(window.location.href.lastIndexOf('/') + 1);
$.post('volunteer/update', postData, function(data) {
    console.log(data);
});
</script>

2) Вы можете использовать PHP для предварительного заполнения переменной JavaScript в представлении, которое затем можете использовать в POST

<script>
var postData;
// assign whatever other data you're passing in
postData.lastSegment = <?php echo $this->uri->segment(2, 0); ?>;
$.post('volunteer/update', postData, function(data) {
    console.log(data);
});
</script>

И, наконец, в контроллере update() вы можете извлечь данные из POST с помощью $this->input->post() или из $_POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...