一种从$ .ajax中的url参数中删除附加url以获取jquery的方法

时间:2012-08-31 08:25:51

标签: jquery ajax cakephp post

我正在使用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);
        }
    });

4 个答案:

答案 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);
    }
});

处理此任务可能看起来很长,但一旦完成,它会在很多方面为您提供帮助。

以下是优点:

  1. 您可以轻松定义更多常量(如任何文件路径等)。
  2. 您可以将所有ajax代码放入外部JS文件中。
  3. 您可以直接将其部署到任何服务器上,而无需更改常量,也可以完美地运行到本地主机上。
  4. 遵循标准惯例等。

答案 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);
      }
});

你的意思是什么