Codeigniter:通过 AJAX 调用 php 脚本时路由不起作用
Codeigniter : route doesn't work when calling php script through AJAX
我有一个 JS 文件,它使用相对路径调用 php 脚本。使用的路径在route.php.
中有匹配的路由
问题是当从 JS 文件调用 php 脚本时,路由似乎没有正确应用。
更准确地说,在 php 文件中,函数的参数 $1 和 $2 不包含预期值(示例如下)。
但是,直接在浏览器中使用url时,参数$1的值是正确的。
route.php
$route['ajax/quizz/(:any)'] = 'test/ajax/';
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': ";
//$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.
因此,我们期望调用控制器 test,并执行函数 ajax,其中参数 $1 = load_items.
实际行为
通过AJAX调用时,从JS文件中,路径ajax/quizz/load_items效果如下:
- 调用控制器测试
- 函数ajax被执行
- 参数 $1 = 测验(预期:load_items)
- 参数 $2 = load_items
通过浏览器直接访问
直接在浏览器中使用同一路径 (http://localhost/codeigniter/ajax/quizz/load_items) 时,我得到了预期的行为:
- 调用控制器测试
- 函数ajax被执行
- 参数 $1 = load_items
你知道我的问题可能来自哪里吗?
设置你的 js ajax 路径 full.Instead 使用 ajax/quizz/load_items
使用
http://localhost/codeigniter/ajax/quizz/load_items.
我有一个 JS 文件,它使用相对路径调用 php 脚本。使用的路径在route.php.
中有匹配的路由问题是当从 JS 文件调用 php 脚本时,路由似乎没有正确应用。 更准确地说,在 php 文件中,函数的参数 $1 和 $2 不包含预期值(示例如下)。
但是,直接在浏览器中使用url时,参数$1的值是正确的。
route.php
$route['ajax/quizz/(:any)'] = 'test/ajax/';
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': ";
//$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.
因此,我们期望调用控制器 test,并执行函数 ajax,其中参数 $1 = load_items.
实际行为
通过AJAX调用时,从JS文件中,路径ajax/quizz/load_items效果如下:
- 调用控制器测试
- 函数ajax被执行
- 参数 $1 = 测验(预期:load_items)
- 参数 $2 = load_items
通过浏览器直接访问
直接在浏览器中使用同一路径 (http://localhost/codeigniter/ajax/quizz/load_items) 时,我得到了预期的行为:
- 调用控制器测试
- 函数ajax被执行
- 参数 $1 = load_items
你知道我的问题可能来自哪里吗?
设置你的 js ajax 路径 full.Instead 使用 ajax/quizz/load_items
使用
http://localhost/codeigniter/ajax/quizz/load_items.