AJAX调用没有击中控制器方法 - ASP.NET MVC

时间:2017-07-19 15:37:26

标签: c# jquery asp.net ajax asp.net-mvc

我尝试在Controller方法中设置断点。但它并不止于此。警报“点击”,下一个工作完全正常。但是没有调用控制器方法。任何帮助表示赞赏。这是我的ajax调用和我的控制器方法。

var Url = "@Url.Action("~/Home/Get_Location")";

$("#gotoloc").click(function() {
  alert("clicked");
  alert(lat +" "+ lon);
  $.ajax({
    type: "POST",
    url: Url,
    data: { 
      latitude: lat, 
      longitude: lon    
    },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response) {
      alert("Hello:" + response)
    },
    failure: function(response) {
      alert(response.responseText);
    },
    error: function(response) {
      alert(response.responseText);
    }
  });
  alert("ignored");
});
public JsonResult Get_Location(double latitude,double longitude)
{
  string loc = latitude + "/" + longitude;
  return Json(loc, JsonRequestBehavior.AllowGet);
}

1 个答案:

答案 0 :(得分:2)

您错误地使用了Url.Action方法。

试试这个

var Url = "@Url.Action("Get_Location","Home")";

上面的重载将action方法名称作为第一个参数,控制器名称作为第二个参数

另外,我发现你传递的是不正确的contentType请求标头。 contentType标头告诉服务器客户端发送的数据类型是什么。您当前的代码表示您正在发送json数据。但是你的action方法中有2个参数,json序列化器无法正确映射发布的数据,因此你将从服务器获得500响应。

这应该有效,假设您的页面中没有其他js错误

var url = "@Url.Action("Get_Location","Home")";

$.ajax({
    type: "POST",
    url: url,
    data: { latitude: 44, longitude: 55 },
    success: function (response) {
        console.log("Hello:" + response);
    },
    failure: function (response) {
        console.log(response.responseText);
    },
    error: function (response) {
        console.log(response.responseText);
    }
});