我在一個網站上工作,並有3個不同的分支機構。典型的dev-> stage->生產情況。
在3周不同的網址全部3運行:
,所以我想有通用代碼在全部3上運行而不對文件路徑進行任何修改。
爲了達到這個目的,我只需要設置base_path
var set,爲任何CodeIgniter安裝配置這個特定的分支。
var base_url = "<?=base_url();?>"; // This sets base_url accordingly.
$.post(base_url + 'login/ajaxLogin', { // See note below
login_email: $('#login_email').val(),
login_pass: $('#login_pass').val(),
},
function(data) {
if(data == 'true') {
window.location.href = base_url;
} else {
$('h2').replaceWith('<h2 style="color:#b81900;">Login Failed</h2>');
return false;
}
});
上面的代碼在Chrome中工作正常。但它在Safari和Firefox中不起作用。 在Firefox它靜靜地失敗,並在Safari我得到"Unable to load resource: cancelled"
注意:如果我刪除base_url
和剛剛成立的腳本路徑/login/ajaxLogin
,/dev/login/ajaxLogin
或/stage/login/ajaxLogin
一切完美。
看來我可能會遇到跨域腳本限制,但我不確定爲什麼?
是的,我熟悉Same Origin Policy是的,我已經看到了這對jQuery的網站:
由於瀏覽器的安全限制,大多數「Ajax」的請求都受到同樣的原產地政策 ;該請求無法成功檢索來自不同域,子域, 或協議的數據。
如果帶有
jQuery.post()
的請求返回錯誤代碼,它將自動失敗,除非 腳本也調用了全局方法.ajaxError()
。
以上都不適用於我的情況,因爲我住在我的域名,所以我不完全確定發生了什麼,但我真的很想找到解決此問題的解決方法。
我要問第一個愚蠢的問題,但是base_path函數在所有實例中返回相同的路徑嗎? – jerebear 2010-07-13 02:50:45
首先,可能需要查找此PHP實際生成的Javascript,其次,使用Chrome開發人員工具或Firebug查找失敗請求的URL。 – Matchu 2010-07-13 02:55:10
'base_url()'爲url添加了一個斜槓,所以你可能會得到類似'http:// url.com // stage/login/ajaxLogin'這樣的東西。正如@Matchu所說,檢查看看哪些URL正在生成。 – stormdrain 2010-07-13 03:22:27