Tengo un formulario HTML y quiero averiguar la IP y el país cuando los usuarios envían el formulario.
Puedo ver la información del usuario, pero ¿cómo puedo enviarla oculta?
¿Qué necesito agregar a mi formulario o código Javascript?
<div id="ip"></div> <div id="address"></div> <hr/>Full response: <pre id="details"></pre> <script>$.get("http://ipinfo.io", function (response) { $("#ip").html("IP: " + response.ip); $("#address").html("Location: " + response.city + ", " + response.region); $("#details").html(JSON.stringify(response, null, 4)); }, "jsonp");</script>Ejemplo: Por ejemplo, Así es como puedo obtener información UTM. De la misma manera, quiero poder obtener la IP y el país así. Uso webhook en mi publicación.
<input type="hidden" name="utm_source" value=""> <input type="hidden" name="utm_medium" value=""> <input type="hidden" name="utm_campaign" value=""> <script>var queryForm=function(e){var t=!(!e||!e.reset)&&e.reset,n=window.location.toString().split("?");if(n.length>1){var o=n[1].split("&");for(s in o){var r=o[s].split("=");(t||null===sessionStorage.getItem(r[0]))&&sessionStorage.setItem(r[0],decodeURIComponent(r[1]))}}for(var i=document.querySelectorAll("input[type=hidden], input[type=text]"),s=0;s<i.length;s++){var a=sessionStorage.getItem(i[s].name);a&&(document.getElementsByName(i[s].name)[0].value=a)}};setTimeout(function(){queryForm()},3e3);</script>Doy por hecho que has recibido correctamente los datos (ip, lcoation). En su JS, escribe los valores en su HTML (id="ip", id="dirección"). Ahora puede recopilar los datos nuevamente al enviarlos a su servidor.
const ip = document.getElementById('ip'); const address = document.getElementById('address'); const data = { ip: ip, address: address }; fetch('https://youDomain.tld/profile', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(data), }) .then(response => response.json()) .then(data => { console.log('Success:', data); }) .catch((error) => { console.error('Error:', error); }); Y si lo hace oculto, significa que debe agregar algo de estilo para ocultar las etiquetas div con ip = ip e id = dirección. Estilo en línea <div id="ip" style="display:none;"></div>