javascript - 使用ajax返回谷歌地图标记始终为空

标签 javascript jquery ajax google-maps

编辑:我从网络数据中得到的实际错误:

enter image description here

“无效的 JSON 原语:位置”

调用它的代码:

function AddMarkerAndPanTo(latLng, map) {
    var marker = new google.maps.Marker({
        position: latLng,
        map: map
    });

    var x = marker.position;

    $.ajax({
        type: "POST",
        url: '@Url.Action("AddMarker", "Map")', // Map Controller, AddMarker Action
        data: JSON.stringify({ "position": x }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            if (data.done)
                alert("Marker added");
            else
                alert("MARKER FAILED");
        }
    });
    map.panTo(latLng);
}

使用下面发布的 View 模型的服务器端函数:

[HttpPost]
public ActionResult AddMarker(LatLngViewModel position)
{            
    if (position != null)
        return Json(true, JsonRequestBehavior.AllowGet);
    else
        return Json(false, JsonRequestBehavior.AllowGet);
}

View 模型:

public class LatLngViewModel
{
    double latitude { get; set; }
    double longitude { get; set; }
}

我尝试使用带引号且不带 on 位置、字符串化结果或使用 toJSON() 返回结果。尝试将 toSend 与各种引号等缝合在一起。此时我不知道是什么原因造成的,而且我手头没有其他解决方案。感谢任何帮助解决这个问题并将血腥坐标发回以某种方式将它们绑定(bind)到模型的帮助。

最佳答案

您需要传递具有纬度和经度属性的对象以匹配您的 View 模型。像这样:

function AddMarkerAndPanTo(latLng, map) {
    var marker = new google.maps.Marker({
        position: latLng,
        map: map
    });

    $.ajax({
        type: "POST",
        url: '@Url.Action("AddMarker", "Map")', // Map Controller, AddMarker Action
        data: { 
            latitude: latLng.lat(), 
            longitude: latLng.lng() 
        },
        success: function (data) {
            if (data.done)
                alert("Marker added");
            else
                alert("MARKER FAILED");
        }
    });

    map.panTo(latLng);
}

这是您缺少的重要部分:

data: { 
    latitude: latLng.lat(), 
    longitude: latLng.lng() 
},

传递给此函数的 latLng 对象有 2 个属性 latlng,这两个属性又是您需要调用的函数命令以十进制值形式获取相应的坐标。

<小时/>

更新:

确保您的 View 模型属性是公开:

public class LatLngViewModel
{
    public double latitude { get; set; }
    public double longitude { get; set; }
}

关于javascript - 使用ajax返回谷歌地图标记始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37092612/

相关文章:

Javascript 添加变量两次

javascript - JQuery 验证字段编号长度取决于

jquery - Go - 如何使用 gin 接收 ajax 类型为 DELETE 的 json 数据

javascript - Wordpress Ajax 自定义分类法

javascript - 使用 Ramda 减少 "position"属性

javascript - JointJS - 主干错误无法读取未定义的属性 '_listenerId'

javascript - Kendo UI - 网格中的工具提示

javascript - 在带有动态参数的javascript中有多个倒数计时器

jquery - 高级 jQuery 过滤 jQuery 数组

ajax - 是什么使跨域Ajax不安全?