0

我有一个 Ajax 函数 -

$(document).ready(function(){
$.ajax({
        url: base_url+'movies/index/this_week/hindi',
        type: "POST",
        success: function( data )
        {               
        $("#news1").html(data);
        }                 
     });
});

在我的电影控制器中,当我打印$this->uri->segment(2)$this->uri->segment(3)在 _remap() 函数中它总是返回随机值。有时它返回两个语句的索引,有时它返回'index'和'hindi'等。

每次刷新页面时,它都会返回随机值。我越来越糊涂了。为什么会发生?

这是 _remap() 函数。

function _remap()
{
    $segment_1 = $this->uri->segment(1);
    echo "1==>".$this->uri->segment(1);
    echo " 2==>".$this->uri->segment(2);
    echo " 3==>".$this->uri->segment(3);
    echo " 4==>".$this->uri->segment(4);

    switch ($segment_1) {
        case null:
              case false:
              case '':
                     $this->index();
                     break;

              case 'movies':
                    if($this->uri->segment(2) == "index" && $this->uri->segment(3) == "this_week")
                   {
                            $this->moviedescription($this->uri->segment(4));
                   }
                   else
                   {
                         $this->moviedescription();
                   }
                   break;

            default:
                    $this->index();
            break;
            }
        }

任何帮助表示赞赏。提前致谢。

4

3 回答 3

1

可能有比使用 uri 段更好的方法。尝试使用函数参数,如下所示:

你的movies控制器:

public function index($when = false, $type = false) { 
    ...
    echo $when, ', ', $type;
    // $when should be this_week and $type should be hindi, in your example)
    // $when isn't the best variable name, but you get the idea
}

然后只需将这些参数作为变量正常访问,因为它们总是相同的,没有随机值。我已将它们的默认值设置为 false 以防万一您不一直使用它们(例如,如果您有默认movies页面)。

于 2013-05-23T14:02:48.173 回答
0

我已经在我的计算机中检查了您的代码,它运行良好。base_url因此,如果在 JAVASCRIPT 中正确定义,则问题不在代码中。仔细检查。

您可能在路由配置文件中设置了其他路由,这些路由与 url 混淆,或者您可能对.htaccess文件有问题。

于 2013-05-24T06:42:16.403 回答
0

它不应该给你随机值,这真的很奇怪,现在也不确定。

当您向控制器发出 ajax 请求(来自您的示例)时,接收控制器应该具有:

echo $this->uri->segment(1); // result "movies"
echo $this->uri->segment(2); // result "index"
echo $this->uri->segment(3); // result "this_week"
echo $this->uri->segment(4); // result "hindi"

您可以传递第二个参数作为默认值。

var_dump($this->uri->segment(5,FALSE)); // result BOOL FALSE
于 2013-05-23T12:42:20.283 回答