![](/img/trans.png)
[英]Jquery ajax url when publishing asp.net mvc project on iis
[英]URL Handling + MVC 4 + Jquery Ajax + IIS
我一直在开发MVC 4应用程序,该应用程序还通过Jquery包含Ajax。 我有一个问题。
例如,如果我单击一个按钮,则onclick事件将触发一个javascript方法。 此方法在.js文件中。
该javascript方法使用Ajax调用一个ActionResult
,该ActionResult
接收一些没有特殊要求的参数(字符串,整数)。 所以..可以说我的操作结果在“ Person
” Controller
,其名称为“ Add
”。 所以我想添加一个人。
我的ajax调用中的url属性应为"/Person/Add"
并且我的数据应类似于:
var person = new Object();
person.name = "John";
person.id = 1;
data: person
当使用Visual Studio运行应用程序时,这可以正常工作。 但是,当我在IIS中部署它时,出现404错误。
我已经尝试过了 我在布局中添加了<link>
<link id="PersonAddURL" href="Url.Content("~/Person/Add") />
,然后代替使用url: "/Person/Add"
,将其更改为url: $("#PersonAddURL").attr("href")
。
现在,此方法有效,我认为不是解决此问题的好方法。 应该有另一个更好的选择。 即使我设法解决了问题,我仍然希望有人向我解释这种情况发生的原因。 我不喜欢每个网址都有一个链接标签的想法。
感谢您将来的回答。
我通常要做的是在ASP.NET MVC布局中包含以下全局javascript变量:
<script>var webroot = "@Url.Content("~/")";</script>
然后可以从任何JS文件执行以下操作:
$.post(webroot + "Person/Add", person, function(result){ ... });
只要确保在任何AJAX调用之前声明并初始化webroot变量即可。
如果您在JavaScript中使用名称空间,则可以将其更改为(假设应用名称空间):
<script>app.webroot = "@Url.Content("~/")";</script>
并删除会使开发人员感到不适的全局变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.