从视图(javascript)向MVC中的控制器发送数据5
问题描述:
因此,在我的索引视图中,我以经度和纬度的形式接收并显示用户的当前位置。从视图(javascript)向MVC中的控制器发送数据5
(function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}());
function showPosition(position) {
$('#lat').text(position.coords.latitude);
$('#long').text(position.coords.longitude);
}
有没有办法将position.coords.latitude和position.coordes.longitude发送到我的索引控制器? 或者我应该让用户点击一个按钮来提交它们,就像表单一样?我是使用坐标的新手。
在此先感谢!
答
把这个在您的showPosition功能:
var postData = { Lat: position.coords.latitude, Long: position.coords.longitude };
$.ajax(
{
type: "POST",
contentType: "application/json; charset=utf-8",
url: "AjaxTest",
//dataType: "json",
data: JSON.stringify(postData),
success: function (data, status) {
alert("Pass" + data);
},
error: function (ex) {
alert("Fail" + ex);
}
});
在你的控制器,你需要这个动作。给它一个更好的名字,请:
public JsonResult AjaxTest(Position position)
{
// do whatever you want here. I am simply returning the value.
return Json("You posted: " + position.Lat + " items.", JsonRequestBehavior.AllowGet);
}
你会需要这样的模式:
public class Position
{
public double Lat { get; set; }
public double Long { get; set; }
}
现在运行应用程序时,我得到这个警告:http://i.imgur.com/ n12Jy15.png – crystyxn
因为您需要更改要发布的网址。您是否在生成视图的同一控制器中创建了该操作?如果没有,你必须指定网址。我只是把行动的名字,因为视图是从同一个控制器生成的。 – CodingYoshi
是的,它在索引控制器 – crystyxn