Ste*_*nno 0 ajax routing codeigniter
我正在尝试在视图中执行AJAX请求,用户提供了一些使用AJAX发送到服务器的输入,并且它应该去的功能是使用CodeIgniters路由进行路由的.
这是我在提出请求时目前所持的观点.
http://localhost:8888/companies/list
Run Code Online (Sandbox Code Playgroud)
在我的路由配置中,我在下面设置了这条路线来处理AJAX请求,该请求应该能够来自任何视图,并且仍然可以转到我指定的路由.
$route['test_ajax'] = "ajax/test_ajax";
Run Code Online (Sandbox Code Playgroud)
所以请求应该转到"ajax"控制器并使用函数"test_ajax",这应该使POST-url看起来像这样.
POST http://localhost:8888/test_ajax
Run Code Online (Sandbox Code Playgroud)
但我得到的是我正站在的当前URL,并且我已经指定的路由附加到URL完全崩溃我的响应来自AJAX请求,因为它甚至没有接近它应该的功能.我得到的POST-url看起来像这样.
POST http://localhost:8888/companies/test_ajax
Run Code Online (Sandbox Code Playgroud)
注意如何删除/ companies的参数.参数/ list在某个地方丢失了,虽然如果我在列表后面添加一个尾部斜杠,我也会在URL中获得list参数.
所以刚刚发生的事情是POST试图转向公司控制器并寻找功能test_ajax,它在ajax-controller中定义,而不是在公司控制器中定义.无论我在哪个URL,都会出现此错误,并且它始终遵循相同的模式.它会一直将我的route-URL附加到现有URL,而不是正确路由.
那么什么可能导致路由以这种方式运行,是否存在任何意外启用或任何设置的设置?因为我知道我在以前的项目中已经有数百次这样的工作.
提前致谢.
这是因为您的Javascript使用当前目录作为基础,并将AJAX URL附加到它.因为您(在公司目录中至少是客户端),它会将您的URL附加到此目录上.
如果您的Javascript是内联的,解决方案是使用base_url()PHP函数,而不是代码...
var url = '<?= base_url(); ?>test_ajax/'
如果您的Javascript不是内联的,您可以使用PHP函数在HTML文档的顶部声明一个全局变量...
var BASE_URL = '<?= base_url(); ?>'
并在你的Javascript中的其他地方使用它...
var url = BASE_URL + 'test_ajax/'
或者,您可以只对您的基本网址进行硬编码,但这可能会让您的网站真正变得非常麻烦.
| 归档时间: |
|
| 查看次数: |
4164 次 |
| 最近记录: |