Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代码点火器:路径不';在通过AJAX调用php脚本时无法工作_Javascript_Php_Ajax_Codeigniter_Routes - Fatal编程技术网

Javascript 代码点火器:路径不';在通过AJAX调用php脚本时无法工作

Javascript 代码点火器:路径不';在通过AJAX调用php脚本时无法工作,javascript,php,ajax,codeigniter,routes,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'; public function ajax($elt,$elt2 = "arg2"){

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

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

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

route.php

$route['ajax/quizz/(:any)'] = 'test/ajax/$1';
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;
    }
}
JS文件

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

$route['ajax/quizz/(:any)'] = 'test/ajax/$1';
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_项)应与路由AJAX/quizz/(:any)匹配,并且生成的路径应为test/AJAX/load_项

因此,我们希望调用controllertest,并执行函数ajax,参数为$1=load\u items

实际行为

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

  • 控制器测试称为
  • 函数ajax被执行
  • 参数$1=测验(应为:加载项目
  • 参数$2=加载\u项
通过浏览器直接访问

在浏览器中直接使用相同的路径()时,我得到了预期的行为:

  • 控制器测试称为
  • 函数ajax被执行
  • 参数$1=加载\u项

您看到我的问题可能来自哪里了吗?

将js ajax路径设置为完整路径。而不是使用
ajax/quizz/load\u项目

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

你好,谢弗。首先,谢谢你的回答。正如您所建议的,当我放置完整的URL时,它确实起作用。然而,对我来说,保持相对路径非常重要,因为以后不会“localhost/codeigniter/ajax/quizz/load_items,但类似于www.my-website/ajax/quizz/load_items。所以我真的需要保持一个相对的路径。你可以在这里看看如何动态地创建初始部分Hello Shaiful。谢谢。你提供的链接纠正了我的问题。