Javascript 从JS文件获取正确的URL以进行ajax调用

Javascript 从JS文件获取正确的URL以进行ajax调用,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我正在使用ASP MVC应用程序。我创建了一个clients.js文件,其中包含一个ajax方法,该方法调用控制器,然后检索数据。我的问题是,该页面所在的URL如下所示: http://my.clients.com/GST/2015-4/LEBIN/Profiles/ClientProfile/Index/79 $.ajax({ url: "/ClientProfile/UpdateClient", ... http://my.clients.com/UpdateClient 在

我正在使用ASP MVC应用程序。我创建了一个clients.js文件,其中包含一个ajax方法,该方法调用控制器,然后检索数据。我的问题是,该页面所在的URL如下所示:

http://my.clients.com/GST/2015-4/LEBIN/Profiles/ClientProfile/Index/79
$.ajax({
  url: "/ClientProfile/UpdateClient",
 ...
  http://my.clients.com/UpdateClient
在我的ajax方法中

$.ajax({
  url: "ClientProfile/UpdateClient",
  context: ..
  data: ...
}).done(function() {
  ...;
});
因此,使用这种格式,我得到

http://my.clients.com/GST/2015-4/LEBIN/Profiles/ClientProfile/Index/79/ClientProfile/UpdateClient
但我需要:

http://my.clients.com/GST/2015-4/LEBIN/Profiles/ClientProfile/UpdateClient
另外,如果我在url之前添加/,如下所示:

http://my.clients.com/GST/2015-4/LEBIN/Profiles/ClientProfile/Index/79
$.ajax({
  url: "/ClientProfile/UpdateClient",
 ...
  http://my.clients.com/UpdateClient
其URL格式如下所示:

http://my.clients.com/GST/2015-4/LEBIN/Profiles/ClientProfile/Index/79
$.ajax({
  url: "/ClientProfile/UpdateClient",
 ...
  http://my.clients.com/UpdateClient
如何获得正确的路径?我只需要用正确的操作替换
/Index/83
,而无需使用funky replaces或逻辑

其他信息


我不想只添加整个url部分的原因。。因为/2015-4/part可能会更改多次

只需使用../,这样您就可以返回1个文件夹,所以它应该是这样的

$.ajax({
  url: "../../../ClientProfile/UpdateClient",
  context: ..
  data: ...
}).done(function() {
  ...;
});

只需使用../,这样您就可以返回1个文件夹,所以它应该是这样的

$.ajax({
  url: "../../../ClientProfile/UpdateClient",
  context: ..
  data: ...
}).done(function() {
  ...;
});
根据我的评论:

yourJsFile.js:

var AjaxCallToController = {
    callAjax: function(url){
        $.ajax({
           url: url,
           context: ..
           data: ...
           }).done(function() {
           ...;
           });
    }
}
在yourView.cshtml中

<script>
AjaxCallToController.callAjax('@Url.Action("UpdateClient", "ClientController"');
</script>

AjaxCallToController.callAjax('@Url.Action(“UpdateClient”,“ClientController”);
诸如此类。

根据我的评论:

yourJsFile.js:

var AjaxCallToController = {
    callAjax: function(url){
        $.ajax({
           url: url,
           context: ..
           data: ...
           }).done(function() {
           ...;
           });
    }
}
在yourView.cshtml中

<script>
AjaxCallToController.callAjax('@Url.Action("UpdateClient", "ClientController"');
</script>

AjaxCallToController.callAjax('@Url.Action(“UpdateClient”,“ClientController”);

类似于此。

您可以通过定义默认的
站点URL来实现这一点,方法是将其添加到主模板头中,然后在任何
.js
文件中调用它,如下所示:

定义标题URL:

<script> var site_url = '<?php echo site_url() ?>';</script>
// define the <?php echo site_url() ?> in your main PHP config file.
window.location = site_url +'dashboard';


谢谢

您可以通过定义默认的
站点URL
来实现这一点,方法是将其添加到主模板头中,然后在任何
.js
文件中调用它,如下所示:

定义标题URL:

<script> var site_url = '<?php echo site_url() ?>';</script>
// define the <?php echo site_url() ?> in your main PHP config file.
window.location = site_url +'dashboard';


谢谢

在这种情况下,为什么您不能将url指向
/GST/2015-4/LEBIN/Profiles/ClientProfile/UpdateClient
。?/2015-4/part可能会更改多次您应该将其传递到ajax”/GST/2015-4/LEBIN/Profiles/ClientProfile/UpdateClient“如果你想采取正确的行动。如果你不止一次呼叫控制器,你可以将部件“/GST/2015-4/LEBIN/Profiles/”或者你可以在javascript中创建对象,并将路径传递给mvc视图,mvc视图是@url.action的输出,这可能会起作用。
。/../UpdateClient
就像你的
/Index/79
那样,为什么你不能将url指向
/GST/2015-4/LEBIN/Profiles/ClientProfile/UpdateCliente> ..?/2015-4/部件可能会更改多次如果要执行正确的操作,您应该将部件传递到ajax“/GST/2015-4/LEBIN/Profiles/ClientProfile/UpdateClient”。如果您对控制器有多个调用,则可以将部件“/GST/2015-4/LEBIN/Profiles/”或者您可以在javascript中创建对象,并将路径传递给mvc视图,mvc视图是@url.action的输出。这可能会起作用。
。/../UpdateClient
,正如您所做的那样
/Index/79