如何不在js文件中硬编码codeigniter链接
how not to hard-code codeigniter link in js file
我为我的codeigniter应用程序编写了下面的例程来根据所选国家检索城市。
$(document).ready(function() {
$("select#cbo_country").change(function() {
$.post("http://localhost/main/index.php/city/get_data_by_country", {
int_country_id : $(this).val()
},
function(data) {
// some code here
},'json');
})
});
如你所见,我硬编码的url (http://localhost/main/index.php/city/get_data_by_country),我知道这是一个不好的做法,但我忍不住。
是否有一种干净的方法来不硬编码url?我曾经使用codeigniter的base_url(),但由于我将例程移动到js文件中,我不再能够使用该函数。
(大部分)取自我关于如何在Javascript中获得相对路径的回答
你有两个选择:
-
在JavaScript中构建一个包含所有环境特定设置的配置/首选项对象:
var config = { base: "<?php echo base_url(); ?>", someOtherPref: 4 };
,然后用
config.base
作为AJAX url的前缀。你必须把配置对象放在PHP解析的地方;标准的选择是在
<head>
HTML元素中。不要担心它是一个小的配置对象,它的内容可以在每个页面上改变,所以把它放在那里是完全合理的。 -
使用
<base />
HTML标签设置所有相对URL的URL前缀。这影响所有相对URL:图像,链接等。
就我个人而言,我会选择选项1。您很可能会发现该配置对象在其他地方会派上用场。
将"http://localhost/main/index.php/city/get_data_by_country"
更改为"/main/index.php/city/get_data_by_country"
,无论您的基础url是什么,它都将工作
这是有效的,因为main/index.php
之前的/
说"从根目录开始,到main
文件夹中的index.php
文件"。
除非你的文档根文件夹被设置为main
文件夹,否则,去掉main
您可以做的一件事是为页面上的元素添加data-baseurl
属性(body
元素有效)。然后你可以从JavaScript文件中获取。
<body data-baseurl="<?=base_url()?>">
然后在JavaScript中:
$("select#cbo_country").change(function() {
var baseURL = $('body').data('baseurl')
$.post(baseURL+"city/get_data_by_country", {
int_country_id : $(this).val()
},
function(data) {
// some code here
},'json');
})
- 将地理编码结果转换为php变量以发布到mysql数据库
- 使用codeigniter的多链下拉列表
- Json在完整日历中对数据进行了编码
- 在CodeIgniter视图中将Javascript或jQuery代码作为PHP文件编写可以吗
- Codeigniter会话概念简要说明
- 当达到codeigniter/tank auth会话超时时,在ajax调用中处理php重定向
- 如何对每个用户每天只允许单击一次的按钮进行编码
- Javascript字符集编码
- 如何使用post和ajax加载视图Codeigniter
- 如何在javascript转换编码中将一个动态值从一个表单添加到另一个页面
- base64编码的图像比intranet中的常规图像好吗
- 我不知道我的编码有什么问题.(JavaScript)
- 为什么字符编码对URL很重要
- 如何在做PHP时在base64中动态编码;preg_ replace”;
- 如何将JSON编码的PHP数组发送到同一页面上的数据表
- 如何使Jquery编码的动态下拉菜单与PHP GET变量协调工作
- 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 以HTML文件中的编码形式脱机存储图像
- 如何不在js文件中硬编码codeigniter链接