【问题标题】:Getting user location with form submit通过表单提交获取用户位置
【发布时间】:2016-11-08 09:00:34
【问题描述】:

您好,我使用 HTML5 地理定位,在用户提交表单后,我想存储他的经度和纬度,但出现了问题

我在提交按钮上做了一个 onclick="" 事件,当按下按钮时,js 将获得协调并将它们放在表单中的隐藏字段中,并且表单将被发送到 php 但是,每当我提交表单,小弹出窗口会出来,它要求获得位置的许可,它立即消失,这可能是因为刷新页面的php,我该怎么办?正如我已经说过的,当您单击提交表单按钮时,js 将被触发并在接受许可后请求许可,隐藏字段将填充协调数据,然后表单将被发送到服务器,但是,在我按下后按钮然后关于允许位置的弹出窗口将熄灭一秒钟并立即消失,页面将刷新但没有结果,我该如何解决这个问题?

【问题讨论】:

  • 您应该首先拒绝发送表单 (e.preventDefault()),而不是等到用户授予权限...或者可以拒绝并处理他的输入

标签: javascript php forms


【解决方案1】:

*从 Chrome 50 开始,Geolocation API 仅适用于 HTTPS 等安全上下文。如果 您的网站托管在非安全源(例如 HTTP)上 获取用户的请求 位置将不再起作用。

【讨论】:

    【解决方案2】:

    解决此问题的一个简单方法是运行 JS 代码,该代码检测位置并在表单第一次加载页面时请求权限,而不是在它提交时 .

    您的问题是您试图在表单提交的同时执行 javascript。除非您覆盖默认行为,否则无论在 onclick 事件中运行什么脚本,表单都会提交,并且不会等待它们。

    另一种方法是覆盖默认提交行为。假设你已经加载了 jQuery,像这样处理点击:

    $(function() {
      $("#mySubmitButton").click(function(event) {
        event.preventDefault(); //stops the form from submitting
        //here write the code which asks for the location and puts it in the hidden fields
       $("#myForm").submit(); //only now do we submit the form, manually.
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多