Javascript 从JS文件获取正确的URL以进行ajax调用
我正在使用ASP MVC应用程序。我创建了一个clients.js文件,其中包含一个ajax方法,该方法调用控制器,然后检索数据。我的问题是,该页面所在的URL如下所示: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 在
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