jQueryPOST可以在本地运行,但不能在服务器上运行
本文关键字:运行 但不能 服务器 jQueryPOST | 更新日期: 2023-09-27 18:19:26
我刚刚将所有jQuery POST
移动到外部文件。所以我将Url.Action
更改为一个实际的URL:
$(".performance-box").click(function () {
$.ajax({
url: '/Home/Performance',
type: 'POST',
success: function (data) {
if (data) {
// Unrelated Stuff
}
}
});
})
此URL在服务器上不起作用,因为它是相对路径,对吗?
因此,我将其更改为~/Home/Performance
,但现在它在本地不起作用。
任何关于如何在外部文件中处理这一问题的指导都将有所帮助。
将Url.Action("controller","Action")存储在视图中的全局js变量中,然后在外部js中使用它,这就是我要做的。因为您可能会在默认网站中本地托管您的网站,而在生产中则不是这样。使用Url操作将确保您拥有正确的Url。
<script>
$(document).ready(function () {
init();
});
function init() {
url = '@Url.Action("Controller", "Action")'
}
</script>
外部JS
$(".performance-box").click(function () {
$.ajax({
url: url,
type: 'POST',
success: function (data) {
if (data) {
// Unrelated Stuff
}
}
});
只要在MVC中正确配置了路由,就应该能够使用不带波浪号(~)的路由。
C#
//controller class attributes
[RouteArea("admin")]
[RoutePrefix("users")]
//method
[HttpGet, Route("autocomplete", Name = "Admin_Users_AutoComplete")]
public JsonResult Autocomplete(string q)
{
//do autocomplete
}
Jquery:
ajax: {
url: "/admin/users/autocomplete",
dataType: 'json',
type: 'POST',
cache: true
}