我有一个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 具有以下效果:
通过浏览器直接访问
在浏览器中直接使用相同的路径(http://localhost/codeigniter/ajax/quizz/load_items)时,我会得到预期的行为:
你看到我的问题可能来自何处?
答案 0 :(得分:1)
设置你的js ajax路径已满。而不是使用ajax/quizz/load_items
使用
http://localhost/codeigniter/ajax/quizz/load_items.