用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5404|回复: 13
收起左侧

[已解决] 请教如何在被引入的JavaScript文件中加入地址

[复制链接]
发表于 2010-9-2 22:40:56 | 显示全部楼层 |阅读模式
本帖最后由 天梯梦 于 2010-9-2 22:43 编辑

如果我在一个页面中引入了一个Js文件  ajax.js,
那么在这个ajax.js文件中我如果加入一个地址,

例如:
JS复制代码
  $.post('controller/segment','',function(data){ alert(data); })  
复制代码


这个是jquery的部分代码,其中 “controller/segment” 这个部分如何写? 我之前试过直接写 “controller/segment” ,但是有时候灵有时候不灵,所以为了安全,我一般都是把这段代码写在php页面内:
PHP复制代码
 echo " $.post('".base_url()."controller/segment','',function(data){ alert(data); }) ";
复制代码


请教一下,如果我还是想引入JavaScript文件的话,我应该如何写这样的地址?
发表于 2010-9-3 01:38:48 | 显示全部楼层
这个我也说过很多次了。
我的做法是,在引入 ajax.js 之前先在视图里用 PHP 生成一个全局 JS 变量,然后在 ajax.js 里使用这个变量,这个变量可以是 http://domian.com/ 类似的内容,因为 CI 必须要绝对 URL,所以需要拼一个绝对 URL。
 楼主| 发表于 2010-9-3 01:55:28 | 显示全部楼层
哇塞,小弟有学了一招,看来JavaScript基础不明白啊,怎么就没有想到全局变量!!  谢谢了
发表于 2010-9-3 02:04:03 | 显示全部楼层
呵呵,思路一定要打开,一定要多思考,你如果思考到位了,肯定会有解决方案。
我就很喜欢思考,每天都不停的想东西,呵呵
发表于 2010-9-3 11:03:29 | 显示全部楼层
尽量不要使用全局变量,你可以在PHP VIEW里面放一个hidden标签里面藏一个地址value。ajax.js这里在通过js去取这个value 拼接
发表于 2010-9-3 12:56:48 | 显示全部楼层
回复 5# eason


    这个东西要是依赖 DOM,那耦合性就很大了,js 就和 DOM 耦合了。
全局变量不是魔鬼,要用到合适的地方。如果你觉得全局变量不好,你还可以使用 namespace 技术使全局名字空间更干净。
发表于 2010-9-7 11:36:24 | 显示全部楼层
本帖最后由 yunnysunny 于 2010-9-7 11:37 编辑

新建一个视图header.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>   
        <meta name="author" content="root"/>
        <meta name="keywords" content="" />
        <meta name="description" content="" />  
        <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
        <base href="<?php echo base_url();?>" />
        <link rel="stylesheet" type="text/css" href="css/client.css">
        <script type="text/javascript" language="javascript" src="js/jquery.js"></script>
        <script type="text/javascript" language="javascript">
                  var base_url="<?php echo base_url();?>";
        </script>

然后在其他的视图中加载这个视图:
<?php
$this->load->view('header');
?>
<script src="js/test.js"></script>
<title><?php echo $t;?></title>
</head>
在这个视图的js(test.js)这么写:
$.post(base_url + "controller/segment',function(data){ alert(data); }) ;
发表于 2010-9-8 18:58:42 | 显示全部楼层
你用 Jquery 吗?

我的用法是在 jquery 的库文件 定义一个变量,变量=本域名

然后用这个变量拼接
发表于 2010-9-9 06:27:53 | 显示全部楼层
做个隐藏域$("#site_url").val() 即可取到!
发表于 2010-9-9 10:44:11 | 显示全部楼层
回复 9# sonic


    隐藏域不如全局变量好(或某个 namespace 下的变量)

本版积分规则