我尝试在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);
}
答案 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);
}
});