我正在使用Codeigniter和i18n库来构建一个多语言网站。我跟着this guide,它运行正常。
显然,问题存在于我必须通过jQuery调用jj中的页面$.getJson
。
console.log('1');
return $.getJSON("photos/change_product", json_data, function(data) {
console.log('2');
在这段代码中,例如,在控制台中它只打印“1”。使用Firebug我看到get调用的url如下所示:
GET http://localhost/website/photos/change_product?product_id=1
GET http://localhost/website/en/photos/change_product
我尝试禁用库并且页面正常工作,所以我很确定这个库存在冲突,但我真的不知道从哪里开始查找。有什么建议吗?
编辑:我部分解决了这个问题。至少,我找到了一个解决方法。 看起来我应该在javascript中使用函数site_url()
,以便它创建正确的链接,如库的wiki中所述。显然我不能在javascript文件中使用php函数,因此,在view
中,在加载脚本之前,我把它放在:
<script type="text/javascript">
var siteurl = "<?=dirname(site_url('a'))?>";
现在我有了前缀的路径,无论我需要它。这有点难看。你认为还有更好的办法吗?
答案 0 :(得分:0)
首先,您可以使用window.location.pathname
获取/website/en/photos/change_product
部分,然后使用某些substr或regexp获取当前语言,并将其添加到被叫网址,如果您不想将js添加到您的网址中php脚本,或添加控制器:
// special URIs (not localized)
private $special = array (
"admin"
);
在MY_Lang.php
文件中。这样,如果缺少语言前缀,则不会重定向该数组中的控制器。您可以为ajax调用创建控制器并将其添加到数组中,或者在My_Lang
中重写位函数,以便它可以检查整个地址而不仅仅是控制器。