从视图(javascript)向MVC中的控制器发送数据5

从视图(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; } 
} 
+0

现在运行应用程序时,我得到这个警告:http://i.imgur.com/ n12Jy15.png – crystyxn

+0

因为您需要更改要发布的网址。您是否在生成视图的同一控制器中创建了该操作?如果没有,你必须指定网址。我只是把行动的名字,因为视图是从同一个控制器生成的。 – CodingYoshi

+0

是的,它在索引控制器 – crystyxn