gpt4 book ai didi

javascript - 将值从 JsonResult 方法传递到另一个方法

转载 作者:行者123 更新时间:2023-12-03 05:30:06 26 4
gpt4 key购买 nike

在我的 HomeController 中,我有以下方法:

public JsonResult AjaxTest(Position postData)
{
Session["lat"] = postData.Lat;
Session["lng"] = postData.Long;

return Json("", JsonRequestBehavior.AllowGet);
}

如何在我的 Index 方法中包含 lat 和 lng?

public async Task<ActionResult> Index() ,如果重要的话。

View 中检索并传递用户当前坐标的脚本:

var x = document.getElementById("positionButton");

(function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
}());

function showPosition(position)
{
if (position == null) alert('Position is null');
if (position.coords == null) alert('coords is null');

$('#lat').text(position.coords.latitude);
$('#long').text(position.coords.longitude);

var postData = { Lat: position.coords.latitude, Long: position.coords.longitude };

$.ajax(
{
type: "POST",
contentType: "application/json; charset=utf-8",
url: "@Url.Action("AjaxTest", "Home")",
//dataType: "json",
data: JSON.stringify(postData)

});
}

我需要能够获得用户当前的纬度/经度来获取到另一个位置的距离。lat 和 lng 被声明为公共(public)变量,那么为什么在尝试使用 Index 方法内的坐标时它们仍为 0?

编辑,这是 Index 方法:

public object x;
public async Task<ActionResult> Index()
{


x = Session["lat"];


return View(parkingLot);
}

最佳答案

如果变量是在 Controller 中声明的,则可以解释为什么它们为零。

Controller 是根据每个请求创建的。因此,如果您点击 AjaxTest 并设置纬度/经度,当 JsonResult 返回到 ajax 调用时,包含变量的 Controller 将被释放。尝试使用 Session 而不是变量。请参阅here .

关于javascript - 将值从 JsonResult 方法传递到另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40981044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com