RSK*_*RSK 5 ajax jquery cakephp url-rewriting
我在cakePHP应用程序中使用ajax和jQuery.
我的javascript函数放在一个javascript文件中.
现在在我的本地系统中,文件保存在"/ sample"目录中,因此我调用该函数时的路径将是
在ajax.js
$.post({url : "/sample/controller/action"})
Run Code Online (Sandbox Code Playgroud)
但托管后,网址将成为
$.post({url : "/mydomain.com/controller/action"})
Run Code Online (Sandbox Code Playgroud)
在cakePHP中我们$html->url
生成url
但由于此代码在js文件中,我无法使用该函数
我不想在托管之前手动更改所有ajax操作URL
Pau*_*nis 23
您可以在您的蛋糕应用程序的主模板中创建一个可在整个应用程序中使用的全局 javascript变量.确保它存在,因为你也做任何JS包括.
<head>
...
<script type="text/javascript">var myBaseUrl = '<?php echo $html->url; ?>';</script>
...
<script type="text/javascript" src="mycustomJSfile.js">
...
</head>
Run Code Online (Sandbox Code Playgroud)
现在,您可以从MVC框架应用程序中的任何视图文件中执行此类操作.
$.post({url: myBaseUrl + 'controller/action'});
Run Code Online (Sandbox Code Playgroud)
我正在更新Paul Dragoonis的答案以反映最新的CakePHP版本(2.2).
在您的布局文件中,使用CakePHP的JSHelper:设置JavaScript变量<?php echo $this->Js->set('url', $this->request->base); ?>
,其中$this->request
是CakeRequest的实例,并提供有关当前请求的信息.
在上面的行之后,用缓冲区写<?php echo $this->Js->writeBuffer(); ?>
.
然后,您可以使用JavaScript访问此变量app.url
.