Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MVC5中将数据从视图(javascript)发送到控制器_Javascript_C#_Asp.net Mvc - Fatal编程技术网

在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并运行,它只工作一次,发生了什么?好的,这些都是您遇到的其他问题。请输入视图和控制器代码,并与我共享链接。我来看看。