从$.ajax for jquery中的url参数中删除附加url的方法

从$.ajax for jquery中的url参数中删除附加url的方法,jquery,ajax,cakephp,post,Jquery,Ajax,Cakephp,Post,我正在使用cakephp,希望使用jQuery.ajax发布到我的服务器。问题是jQuery的$。ajax附加了协议和主机名,但也包含了当前控制器,因此我无法更改正在粘贴的控制器 是否有方法更改$.ajax中的url:参数?这是我的示例邮政编码: $.ajax({ url: 'controller/action', type: 'post', data: $('#form_data').serialize(), dataType:

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

只需在
$的URL部分中输入您想要发布的确切/更具体的URL即可。post
设置

$.ajax({
    url: 'http://host/controller/action',
    type: 'post',
    data: $('#form_data').serialize(),
    dataType: 'json',
    success: function(json) {
        console.log(json);
    }
});

在cakePHP中,您可以执行以下操作:

$.ajax({
        url: '<?php echo $this->webroot; ?>controller/action',
        type: 'post',
        data: $('#form_data').serialize(),
        dataType: 'json',
        success: function(json) {
            console.log(json);
        }
    });
你的意思是这样的吗试试这个

$.ajax({
    url: '/controller/action',
    type: 'post',
    data: $('#form_data').serialize(),
    dataType: 'json',
    success: function(json) {
        console.log(json);
    }
});

你看到区别了吗?如果你在URL前面加“/”(斜杠),它将被附加到你的域名上,如果没有,它将被附加到你的当前URL上。

创建一个文件,让我们假设“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);
}
将JS变量常量定义到主布局文件中:

<script type="text/javascript">
var SITE_URL = '<?php echo SITE_URL?>';
</script>
处理这项任务的过程可能看起来很长,但一旦完成,它将在许多方面对您有所帮助。

以下是优点:

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

  • 你在找$.post还是$.ajax?在您的问题中,您编写了$.post,但是您的示例代码使用了$.ajax。您不能在外部变量中定义url并调用它吗<代码>变量url=http://foo/bar“然后是
    $.post(url、数据、回调)
    ?让我快速尝试一下,是的,我的坏@kannix,谢谢你的纠正。如果
    js
    代码不是内联的,也不是从外部
    .js
    文件加载的,那该怎么办?好主意。我也试着这么做。谢谢@Arun
    <?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);
    }
    
    require_once('site_constants.php');
    
    <script type="text/javascript">
    var SITE_URL = '<?php echo SITE_URL?>';
    </script>
    
     $.ajax({
        url: SITE_URL+'controller/action',
        type: 'post',
        data: $('#form_data').serialize(),
        dataType: 'json',
        success: function(json) {
            console.log(json);
        }
    });