C# jQueryPost在本地工作,但不在服务器上工作
我刚刚将所有jQueryC# jQueryPost在本地工作,但不在服务器上工作,c#,jquery,asp.net-mvc-4,post,C#,Jquery,Asp.net Mvc 4,Post,我刚刚将所有jQueryPOSTs移动到外部文件。因此,我将Url.Action更改为实际的Url: $(".performance-box").click(function () { $.ajax({ url: '/Home/Performance', type: 'POST', success: function (data) { if (data) { // Unrelated Stuff } } })
POST
s移动到外部文件。因此,我将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>
只要在MVC中正确配置了路由,就应该能够使用不带波浪号(~)的路由 C# Jquery:
ajax: {
url: "/admin/users/autocomplete",
dataType: 'json',
type: 'POST',
cache: true
}
它们在同一台服务器上吗?记住,相对路径是相对于您所在的当前目录的。我不确定我是否知道您的意思。服务器上的文件结构应该与我在本地主机上运行时完全相同。首先要开始检查浏览器开发工具-F12的“网络”选项卡中的实际请求。还应该在ajaxJust中实现一个错误处理程序,结果是404-通常我使用将其放入
Html.Hidden
中,这样我可以从外部文件访问它,但这次尝试使用实际路径~是一个服务器命令,在那里不起作用。试试Moe的回答我想你需要在@Url.action周围加引号这是有效的,但是我必须给Url
赋值,而不声明它(所以是全局的),以便在外部文件中访问它
//controller class attributes
[RouteArea("admin")]
[RoutePrefix("users")]
//method
[HttpGet, Route("autocomplete", Name = "Admin_Users_AutoComplete")]
public JsonResult Autocomplete(string q)
{
//do autocomplete
}
ajax: {
url: "/admin/users/autocomplete",
dataType: 'json',
type: 'POST',
cache: true
}