C# Ajax调用不再命中控制器
我必须编写以下代码来进行ajax调用:C# Ajax调用不再命中控制器,c#,ajax,C#,Ajax,我必须编写以下代码来进行ajax调用: function openMapTab(lat, lng) { $.ajax({ url: "/Controller/DisplayMap?qid=" + $('body').data('usid'), data: { latitude: lat, longitude: lng }, dataType: "text", type: "POST", success: functi
function openMapTab(lat, lng) {
$.ajax({
url: "/Controller/DisplayMap?qid=" + $('body').data('usid'),
data: {
latitude: lat,
longitude: lng
},
dataType: "text",
type: "POST",
success: function (data, textStatus, jqXHR) {
var w = window.open();
$(w.document.head).html("<title>Arcania-Maps</title>");
$(w.document.body).html(data);
},
});
}
然而,由于某种原因,我的ajax调用并没有达到预期效果,即使之前的情况也是如此。
知道为什么吗?默认情况下,所有控制器操作都是
GET
。因此,如果要处理POST
请求,则需要添加[HttpPost]
-属性
[HttpPost("[action]")]
public ActionResult DisplayMap(double latitude, double longitude)
{
...
}
当您查看Chrome开发者工具网络选项卡时,返回的http状态是什么?如果您能提供一个。例如,您的控制器名为
ControllerController
,这似乎很奇怪。$('body')的值是多少。数据('usid')
?请返回(使用git或您的源代码控制系统)到它工作的时间,并更新您的问题以包含该代码,以便我们可以尝试找出差异。url:“/控制器/DISPLAMAP = qID=”+$(“正文”)。数据(“UISD”) = >这不是定义POST请求的URL的正确方式,因为POST请求不使用这样的查询字符串。请考虑创建片段并解释动作方法是如何从未被击中的。是的,可以返回<代码> Action Reule< /代码>。
[HttpPost("[action]")]
public ActionResult DisplayMap(double latitude, double longitude)
{
...
}