我正在使用cakephp并希望使用jQuery.ajax
发布到我的服务器。问题是jQuery的$.ajax
附加协议和主机名,但也包括当前控制器,所以我也无法更改我粘贴的控制器。
有没有办法更改$.ajax
中的url:参数?这是我的样本邮政编码:
$.ajax({
url: 'controller/action',
type: 'post',
data: $('#form_data').serialize(),
dataType: 'json',
success: function(json) {
console.log(json);
}
});
答案 0 :(得分:1)
只需将您要发布的确切/更具体的网址放在$.post
设置的网址部分...
$.ajax({
url: 'http://host/controller/action',
type: 'post',
data: $('#form_data').serialize(),
dataType: 'json',
success: function(json) {
console.log(json);
}
});
答案 1 :(得分:1)
试试这个
$.ajax({
url: '/controller/action',
type: 'post',
data: $('#form_data').serialize(),
dataType: 'json',
success: function(json) {
console.log(json);
}
});
你看到了区别吗?如果您在网址前加上“/”(斜杠),则会将其附加到您的域名中,如果没有,则会将其附加到您当前的网址上。
答案 2 :(得分:1)
创建一个文件让我们假设'site_constants.php'在app / Config文件夹中包含一些常量变量。在其中定义以下常量:
<?php
define('HTTP_HOST', "http://" . $_SERVER['HTTP_HOST'].'/');
if(HTTP_HOST == 'localhost' || HTTP_HOST == '127.0.0.1')
{
define('SITE_URL', HTTP_HOST.'app_folder_name/');
}
else
{
define('SITE_URL', HTTP_HOST);
}
将其加入app/Config/bootstrap.php
require_once('site_constants.php');
将JS变量常量定义到主布局文件中:
<script type="text/javascript">
var SITE_URL = '<?php echo SITE_URL?>';
</script>
现在您可以在任何地方使用它进入您的网站。这也是一个动态的,你不需要在每个ajax方法中更改url。
$.ajax({
url: SITE_URL+'controller/action',
type: 'post',
data: $('#form_data').serialize(),
dataType: 'json',
success: function(json) {
console.log(json);
}
});
处理此任务可能看起来很长,但一旦完成,它会在很多方面为您提供帮助。
以下是优点:
答案 3 :(得分:0)
在cakePHP中,您可以这样做:
$.ajax({
url: '<?php echo $this->webroot; ?>controller/action',
type: 'post',
data: $('#form_data').serialize(),
dataType: 'json',
success: function(json) {
console.log(json);
}
});
如果您的ajax代码在js文件中,那么您可以这样做: 在 layouts / default.ctp 文件中:
<script type="text/javascript">
var webroot = "<?php echo $this->webroot; ?>";
</script>
然后在包含ajax的js文件中,您可以使用js变量 webroot :
$.ajax({
url: webroot + 'controller/action',
type: 'post',
data: $('#form_data').serialize(),
dataType: 'json',
success: function(json) {
console.log(json);
}
});
你的意思是什么