在MVC5中将数据从视图(javascript)发送到控制器
因此,在我的索引视图中,我接收并以纬度和经度的形式显示用户的当前位置在MVC5中将数据从视图(javascript)发送到控制器,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,因此,在我的索引视图中,我接收并以纬度和经度的形式显示用户的当前位置 (function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } }()); function showPosition(position) { $('#lat').text(pos
(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; }
}
如果可以作为get请求发送,那么可以将lat和long格式化为查询字符串。然后使用
window.location
将浏览器重定向到您想要的任何路线。例如
Window.location.href = querystring
将把查询字符串附加到现有路由…或者如果您只能提取现有路由的一部分(如仅域),并将附加段与查询字符串一起附加。签出所有不同选项的
窗口位置 我现在运行应用程序时收到此警报:因为您需要更改要发布到的url。您是否在生成视图的同一控制器中创建了该操作?如果没有,则必须指定url。我只是输入了操作的名称,因为视图是从同一个控制器生成的。您有一个名为IndexController的控制器吗?你确定吗?您是否创建了我在IndexController中的答案中发布的操作,并且您也在为IndexController中的视图提供服务?这是不可能的,因为这必须起作用。您的url不正确。此外,如果你在行动中做其他工作,那可能会失败。若要开始,请使用我的代码,并在其运行后修改操作方法代码。抱歉,控制器名为HomeController,但内部有一个用于索引、关于和联系人的任务。我发现了其他一些奇怪的行为。如果我将postData更改为position,那么它只工作一次。如果我想让它再次工作,我会将它改回postData并运行,它只工作一次,发生了什么?好的,这些都是您遇到的其他问题。请输入视图和控制器代码,并与我共享链接。我来看看。