我正在使用ASP MVC应用程序。我创建了一个clients.js文件,该文件具有调用控制器然后检索数据的ajax方法。我的问题是该页面所在的URL看起来像这样:
http://my.clients.com/GST/2015-4/LEBIN/Profiles/ClientProfile/Index/79
在我的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
此外,如果我在这个网址之前添加/:
$.ajax({
url: "/ClientProfile/UpdateClient",
...
它将URL格式化为:
http://my.clients.com/UpdateClient
我如何获得正确的路径?我只需要用正确的动作/Index/83
替换/UpdateClient
,而不需要时髦的替换或逻辑。
附加信息
为什么我不想添加整个网址部分的共鸣...是因为/ 2015-4 /部分可能会多次改变
答案 0 :(得分:3)
根据我的评论:
yourJsFile.js:
var AjaxCallToController = {
callAjax: function(url){
$.ajax({
url: url,
context: ..
data: ...
}).done(function() {
...;
});
}
}
在yourView.cshtml中
<script>
AjaxCallToController.callAjax('@Url.Action("UpdateClient", "ClientController"');
</script>
类似的东西。
答案 1 :(得分:1)
只需使用../,这样你就可以回到1个文件夹,所以看起来应该是这样的
$.ajax({
url: "../../../ClientProfile/UpdateClient",
context: ..
data: ...
}).done(function() {
...;
});
答案 2 :(得分:0)
您可以通过定义默认site URL
来实现这一点,方法是将其添加到主模板标题中,然后在任何.js
文件中调用它,如下所示:
定义标题URL:
<script> var site_url = '<?php echo site_url() ?>';</script>
// define the <?php echo site_url() ?> in your main PHP config file.
然后,您可以在JavaScript文件中以不同的方式调用该URL,例如:
window.location = site_url +'dashboard';
或
jQuery.post(site_url + 'account/forgot', jQuery(this).serialize(), function (res) {
// your code here
});
或
$.ajax({
type: "POST",
url: site_url + 'home/newsletters'
});
谢谢