如何从客户端检索经纬度坐标而不需要发布一次?
Posted
技术标签:
【中文标题】如何从客户端检索经纬度坐标而不需要发布一次?【英文标题】:How do I retrieve lat & long coordinates from the client without them needing to POST once? 【发布时间】:2018-06-20 08:03:01 【问题描述】:一旦他们同意共享它们,我想对他们的 lat/long 进行一些服务器端处理——我希望该处理的结果立即出现在用户所在的同一页面中在他们“允许”位置访问之后。
目前,我可以检索他们的坐标,但删除了一个 POST。因此,当他们“允许”时,我填写一个隐藏的经纬度表格,并等待他们发布表格,然后再使用 Geodjango 进行服务器端处理。
有什么有效的方法可以在坐标可用时立即将坐标发送到服务器,或者立即检索估计的位置?
【问题讨论】:
【参考方案1】:是的,您可以轻松做到这一点:
创建一个以 JSON 格式获取POST
参数的视图
Python 示例:
class MyJsonForAjaxView(generic.View):
def get(self, request, *args, **kwargs):
return JsonResponse('key': value, safe=False)
使用 POST 方法在 javascript 中调用该视图(= AJAX 调用):
JavaScript 代码:
$.ajax(
method: 'post',
type: 'json',
cache: false,
url: 'my_json_url',
data: 'lat': your_lat, 'lgn': your_lgn
).done(function(data)
alert('call successfull!!!');
/* data is filled with Django result, here 'key': value */
/* todo: remember the call has been made and it's registered on Django side */
).fail(function(data)
alert('fatal error!');
).always(function()
/* whatever the result, always do something here */
);
只要你有你需要的东西,你就可以在后台执行此操作
【讨论】:
如果ajaxmethod
是'post'
,那么CBV中的函数不也是def post
吗?反之亦然?我两种方式都试过了,奇怪的是,它们似乎都有效。但当它们发生冲突时就不行了。以上是关于如何从客户端检索经纬度坐标而不需要发布一次?的主要内容,如果未能解决你的问题,请参考以下文章