Codeigniter:通过AJAX调用php脚本时路由不起作用

时间:2015-03-16 00:48:59

标签: javascript php ajax codeigniter routes

我有一个JS文件,它使用相对路径调用php脚本。使用的路径在 route.php 中具有匹配的路径。

问题是当从JS文件调用php脚本时,似乎没有正确应用该路由。 更确切地说,在php文件中,函数的参数$ 1和$ 2不包含预期值(例如下面的例子)。

但是,在浏览器中直接使用url时,参数$ 1的值正确。

route.php

$route['ajax/quizz/(:any)'] = 'test/ajax/$1';

JS档案

var path        = 'ajax/quizz/load_items';  //path used for the AJAX query

test.php的

public function ajax($elt,$elt2 = "arg2"){

    switch($elt){
        case 'quizz' :
            echo "Shouldn't come here. Argument should be 'load_items': $1 $2";
            //$this->ajax_quizz();
            break;

        case 'load_items'   :
            $this->load_items($this->input->post(null,true));
            break;

        case 'add_stats'    :
            $this->add_stats($this->input->post(null,true),$_SESSION['id']);
            break;

        default :
            echo 'Unknown ajax function '.$elt;
    }
}

预期行为

执行AJAX查询时,指定的路径( ajax / quizz / load_items )应与路径 ajax / quizz /(:any)以及生成的路径匹配应该是 test / ajax / load_items

因此,我们希望调用控制器测试,并使用参数$ 1 = load_items 执行函数 ajax

实际行为

当通过AJAX调用时,从JS文件中,路径 ajax / quizz / load_items 具有以下效果:

  • 控制器 test 被称为
  • 执行 ajax 功能
  • 参数$ 1 = quizz(预期: load_items
  • 参数$ 2 = load_items

通过浏览器直接访问

在浏览器中直接使用相同的路径(http://localhost/codeigniter/ajax/quizz/load_items)时,我会得到预期的行为:

  • 控制器 test 被称为
  • 执行 ajax 功能
  • 参数$ 1 = load_items

你看到我的问题可能来自何处?

1 个答案:

答案 0 :(得分:1)

设置你的js ajax路径已满。而不是使用ajax/quizz/load_items使用

http://localhost/codeigniter/ajax/quizz/load_items.