ASP.NET 使用 https 在 Azure VM IIS 中托管的 MVC 应用程序,ajax 调用不工作
ASP.NET MVC application hosted in Azure VM IIS with https, ajax call not working
我有一个 ASP.NET MVC 应用程序,它可以在本地主机上完美运行,并且我正在使用 AD 身份验证和 HTTPS。
当我在 Azure VM 中托管该应用程序时,除 Ajax 调用外,一切都运行良好。 Ajax 调用用于呈现部分视图内容。
jQuery (POD.js) Ajax 呼叫:
$(document).ready(function () {
function ShowData(xMaterial, xDescription, xPGIDate, xAll, xPod, xLot) {
$.ajax({
type: 'POST',
url: "/POD/Index",
data: { Material: xMaterial, Description: xDescription, PGIDate: xPGIDate, All: xAll, cbPod: xPod, cbLot: xLot },
dataType: "html",
success: function (evt) {
$('#PODList').html("");
$('#PODList').html(evt);
},
error: function (err) {
alert(err.statusText);
}
});
}
}
控制器:
[HttpPost]
public PartialViewResult Index(string Material = "", string Description = "", DateTime? PGIDate = null, bool All = true, bool cbPod = false, bool cbLot = false)
{
try
{
List<POD> Model = new List<POD>();
//Some code
return PartialView("_Index", Model);
}
catch (Exception ex)
{
throw ex;
}
}
HTML 查看部分:
<div id="PODList"></div>
<script src="~/Scripts/customScript/POD.js"></script>
jQueryAjax调用returns"Not Found"错误。为什么这只发生在 VM 上,这与 HTTPS 有关吗?请帮忙。
这是因为操作方法的 url 可能会有所不同,具体取决于它在服务器上的部署位置。推荐的方法是始终使用 Url.Action
助手来生成 url,如下所示:
<div id="PODList" data-url="@Url.Action("Index","POD")"></div>
类似地,对于 js、css 文件和图像等资产和资源,我们应该使用 Url.Content
:
<script src="@Url.Content("~/Scripts/customScript/POD.js")"></script>
然后需要在 ajax 调用中使用数据-url url
:
$.ajax({
type: 'POST',
url: $('#PODList').data("url"),
......
......
});
我有一个 ASP.NET MVC 应用程序,它可以在本地主机上完美运行,并且我正在使用 AD 身份验证和 HTTPS。
当我在 Azure VM 中托管该应用程序时,除 Ajax 调用外,一切都运行良好。 Ajax 调用用于呈现部分视图内容。
jQuery (POD.js) Ajax 呼叫:
$(document).ready(function () {
function ShowData(xMaterial, xDescription, xPGIDate, xAll, xPod, xLot) {
$.ajax({
type: 'POST',
url: "/POD/Index",
data: { Material: xMaterial, Description: xDescription, PGIDate: xPGIDate, All: xAll, cbPod: xPod, cbLot: xLot },
dataType: "html",
success: function (evt) {
$('#PODList').html("");
$('#PODList').html(evt);
},
error: function (err) {
alert(err.statusText);
}
});
}
}
控制器:
[HttpPost]
public PartialViewResult Index(string Material = "", string Description = "", DateTime? PGIDate = null, bool All = true, bool cbPod = false, bool cbLot = false)
{
try
{
List<POD> Model = new List<POD>();
//Some code
return PartialView("_Index", Model);
}
catch (Exception ex)
{
throw ex;
}
}
HTML 查看部分:
<div id="PODList"></div>
<script src="~/Scripts/customScript/POD.js"></script>
jQueryAjax调用returns"Not Found"错误。为什么这只发生在 VM 上,这与 HTTPS 有关吗?请帮忙。
这是因为操作方法的 url 可能会有所不同,具体取决于它在服务器上的部署位置。推荐的方法是始终使用 Url.Action
助手来生成 url,如下所示:
<div id="PODList" data-url="@Url.Action("Index","POD")"></div>
类似地,对于 js、css 文件和图像等资产和资源,我们应该使用 Url.Content
:
<script src="@Url.Content("~/Scripts/customScript/POD.js")"></script>
然后需要在 ajax 调用中使用数据-url url
:
$.ajax({
type: 'POST',
url: $('#PODList').data("url"),
......
......
});