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

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

创建一个文件让我们假设’site_constants.php’在app / Config文件夹中包含一些常量变量。 在其中定义以下常量:

  

将它包含在app/Config/bootstrap.php

 require_once('site_constants.php'); 

将JS变量常量定义到主布局文件中:

  

现在您可以在任何地方使用它进入您的网站。 这也是一个动态的,你不需要在每个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. 您可以直接将其部署到任何服务器上,而无需更改常量以及完美地工作到您的localhost。
  4. 遵循标准惯例等

只需将要发布的确切/更具体的url放在$.post设置的url部分中…

 $.ajax({ url: 'http://host/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上。

在CakePHP中,您可以这样做:

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

如果您的ajax代码在js文件中,那么您可以:在layouts / default.ctp文件中:

  

然后在你的包含ajax的js文件中,你可以使用js变量webroot

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

你的意思是那样的吗?