2012-01-11 122 views
0

我使用Codeigniter和i18n庫建立多語言網站。我跟着this guide,它工作正常。多語言i18n庫干擾ajax調用

顯然存在的問題是,在頁面中,我必須通過jQuery調用jQuery,通過$.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中所解釋的。很明顯,我不能使用PHP函數一個JavaScript文件,以便裏面,一個view,加載腳本之前,我把這個:

<script type="text/javascript"> 
var siteurl = "<?=dirname(site_url('a'))?>"; 

現在我有前綴的地方,我需要它的路徑。這有點難看。你認爲有沒有更好的方法來做到這一點?

回答

0

首先,你可以使用window.location.pathname獲得/website/en/photos/change_product部分,然後一些SUBSTR,或正則表達式來獲得當前的語言,並將其添加到稱爲URL如果你不想JS添加到您的PHP腳本,或添加控制器:

// special URIs (not localized) 
    private $special = array (
     "admin" 
    ); 

in MY_Lang.php file。這樣,如果語言前綴丟失,該陣列中的控制器將不會被重定向。您可以爲ajax調用創建控制器並將其添加到數組中,或者重寫My_Lang中的某個位功能,以便它可以檢查整個地址,而不僅僅是控制器。