2013-01-05 28 views
26

क्या सिर्फ jQuery का उपयोग कर वेबसाइट पर किसी ग्राहक स्थान को खोजने का कोई तरीका है। उदाहरण के लिए, यदि कोई उपयोगकर्ता मेरी साइट पर आता है, तो मैं यह कैसे पता लगा सकता हूं कि उनका अनुमानित स्थान सिर्फ jQuery का उपयोग कर रहा है। उदाहरण के लिए, यदि कोई उपयोगकर्ता सैन फ्रांसिस्को सीए से आया तो इसमें कुछ प्रकार के पहचानकर्ता होंगे जो मुझे बताएंगे कि उपयोगकर्ता सैन फ्रांसिस्को सीए से आया था। मुझे वास्तव में काउंटी या मूल के सामान्य क्षेत्र में उनके सटीक स्थान की आवश्यकता नहीं होगी।jQuery/JS (google geolocation api के बिना) का उपयोग कर उपयोगकर्ता का स्थान खोजें?

संपादित करें: http://flourishworks-webutils.appspot.com/req पर जानकारी कैसे उत्पन्न की गई है?

धन्यवाद

+0

ज़रूर पर बेला देखें, jQuery के का उपयोग [ 'ESP' प्लगइन] (http://jquery.com/esp)। गंभीरता से हालांकि, जवाब "नहीं" है, आप क्लाइंट-साइड कोड के साथ ऐसा नहीं कर सकते हैं। – nnnnnn

+0

आप भू-स्थान का उपयोग कर सकते हैं लेकिन उन्हें इसे स्वीकार करना होगा और फिर भी यह सटीक नहीं है। इसके अलावा इसमें कोई पूर्ण-प्रमाणित क्लाइंट-साइड विधि नहीं है जिसे मैं जानता हूं। – Syon

+0

यदि आप भौगोलिक स्थान API का उपयोग नहीं करना चाहते हैं, तो आप अपने आईपी पते के आधार पर * बहुत * अनुमानित अनुमान प्राप्त कर सकते हैं, लेकिन आप इसे केवल jQuery से नहीं प्राप्त कर सकते हैं (आपको सर्वर सहयोग की आवश्यकता होगी)। – Matt

उत्तर

13

HTML5 Geolocation API आप किसी उपयोगकर्ता का अक्षांश/कुछ जावास्क्रिप्ट के साथ देशांतर प्राप्त करने के लिए अनुमति देता है (यदि ब्राउज़र संगत है, और उपयोगकर्ता उसकी/उसके स्थान के लिए उपयोग की अनुमति देता है)।

आप reverse-geocode पते प्राप्त करने के लिए स्थान कर सकते हैं, तो Google के API के अलावा कई free reverse-geocoding सेवाएं हैं।

हालांकि, अगर आपको सटीक स्थान की आवश्यकता नहीं है, और यदि आप चाहते हैं कि आपके सभी उपयोगकर्ता इस सुविधा का लाभ उठाएं (ब्राउज़र से कोई फर्क नहीं पड़ता), और यदि आप उनसे नहीं पूछना चाहते हैं कि वे आपकी साइट को अनुमति देते हैं या नहीं अपना स्थान रखने के लिए, मैं use your user's IP to get the location पर अनुशंसा करता हूं।

1

कोई ग्राहक पक्ष विकल्प एक अच्छा विचार नहीं है, क्योंकि वे कंप्यूटर द्वारा वायरलेस नेटवर्क के आधार पर प्रदान किए जाते हैं। मैं शर्त लगाता हूं कि 9 0% डेस्कटॉप उपयोगकर्ताओं के पास यह सुविधा सक्रिय नहीं है। जब आप ऐसी वेबसाइट पर जाते हैं जो आपका स्थान चाहते हैं, तो आपको सहमत होने के लिए एक बटन क्लिक करना होगा। अगर वे आपकी वेबसाइट पर आ गए हैं, तो वे पहले जानना चाहते हैं कि आपको उनके स्थान की आवश्यकता क्यों है।

एक अच्छा तरीका उन्हें एक पृष्ठ दिखाने के लिए है ताकि उन्हें सूचित किया जा सके कि आपको उनके स्थान की आवश्यकता क्यों है और आप इसे निर्दिष्ट किसी भी अन्य उद्देश्यों के लिए कभी भी उपयोग नहीं करेंगे, और स्थान आपके डेटाबेस में सहेजा नहीं जाएगा।

यदि कोई स्क्रिप्ट है जो सर्वर की तरफ चलाती है, तो क्लाइंट से सर्वर से कनेक्शन होता है। इस मामले में सर्वर को आईपी पता पता होना चाहिए। एक आईपी पता प्राप्त करने के लिए आप एक चाल है जो आप कर सकते हैं।

अपने सर्वर पर एक php स्क्रिप्ट बनाएं, जो केवल आईपी पता लौटाएगा। चूंकि jquery को स्थानीय रूप से संसाधित किया जाता है, जब सर्वर से कनेक्शन बनाया जाता है, तो क्लाइंट आईपी पता का खुलासा किया जाएगा। आवश्यक कनेक्शन बनाने में कुछ अतिरिक्त समय लगेगा लेकिन जल्द ही आईपी पता jQuery में उपलब्ध होगा।

फिर, आप एक अतिरिक्त एपीआई को कड़ी jquery कॉल कर सकते हैं जो आपको उस विशिष्ट आईपी पते के लिए जानकारी देगा। या तो आप एक आईपी डाटाबेस खरीदते हैं और इसे अपने वेबसर्वर पर इंस्टॉल करते हैं ताकि आप इसे कॉल कर सकें, या तो आप एक और एपीआई का उपयोग कर सकते हैं। आप http://www.ipgp.net/ip-address-geolocation-api/

22

देख सकते हैं कि आप जेएसओएनपी का समर्थन करने वाली एक वेब सेवा का उपयोग कर सकते हैं, जैसे मेरी सेवा http://ipinfo.io। यह आपको ग्राहक का आईपी पता, होस्टनाम, भौगोलिक स्थान जानकारी और नेटवर्क स्वामी प्रदान करेगा।

$.get("http://ipinfo.io", function(response) { 
    $("#ip").html(response.ip); 
    $("#address").html(response.city + ", " + response.region); 
}, "jsonp"); 

यहाँ, एक अधिक विस्तृत JSFiddle उदाहरण है कि यह भी पूर्ण प्रतिक्रिया जानकारी बाहर प्रिंट ताकि आप उपलब्ध विवरण देख सकते हैं:: http://jsfiddle.net/zK5FN/2/

+3

यह काम करता है, लेकिन यदि आपके पास प्रति दिन 1,000 से अधिक API अनुरोध हैं तो कोई समस्या है। यदि आपको और अनुरोध करने की आवश्यकता है तो आपको भुगतान करना होगा। –

2
**jQuery(document).ready(function($) { 
    jQuery.getScript('http://www.geoplugin.net/javascript.gp', function() 
{ 
    var country = geoplugin_countryName(); 
    var zone = geoplugin_region(); 
    var district = geoplugin_city(); 
    console.log("Your location is: " + country + ", " + zone + ", " + district); 
}); 
}); 
<script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script> 
<script type="text/javascript"> 
jQuery(document).ready(function($) { 
    alert("Your location is: " + geoplugin_countryName() + ", " + geoplugin_region() + ", " + geoplugin_city()); 
}); 
</script> 
/*--------------------------------detailed function list not necessarily to be included--------- 
function geoplugin_city() { return 'Dobroyd Point';} 
function geoplugin_region() { return 'New South Wales';} 
function geoplugin_regionCode() { return '02';} 
function geoplugin_regionName() { return 'New South Wales';} 
function geoplugin_areaCode() { return '0';} 
function geoplugin_dmaCode() { return '0';} 
function geoplugin_countryCode() { return 'AU';} 
function geoplugin_countryName() { return 'Australia';} 
function geoplugin_continentCode() { return 'OC';} 
function geoplugin_latitude() { return '-33.873600';} 
function geoplugin_longitude() { return '151.144699';} 
function geoplugin_currencyCode() { return 'AUD';} 
function geoplugin_currencySymbol() { return '&amp;#36;';} 
function geoplugin_currencyConverter(amt, symbol) { 
    if (!amt) { return false; } 
    var converted = amt * 0.9587170632; 
    if (converted &lt;0) { return false; } 
    if (symbol === false) { return Math.round(converted * 100)/100; } 
    else { return '&amp;#36;'+(Math.round(converted * 100)/100);} 
    return false; 
} 
*/ 
//----------------example-----------------------// 
<html> 
<head> 
    <script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script> 
</head> 
<body> 
    <script language="Javascript"> 
    document.write("Welcome to our visitors from "+geoplugin_city()+", "+geoplugin_countryName()); 
    </script> 
</body> 
</html> 
31

यहाँ jQuery के साथ कार्य करते हुए का एक उदाहरण है jQuery में ग्राहक आईपी पते & देश का नाम पाने के लिए:

$.getJSON("http://freegeoip.net/json/", function(data) { 
    var country_code = data.country_code; 
    var country = data.country_name; 
    var ip = data.ip; 
    var time_zone = data.time_zone; 
    var latitude = data.latitude; 
    var longitude = data.longitude; 

    alert("Country Code: " + country_code); 
    alert("Country Name: " + country); 
    alert("IP: " + ip); 
    alert("Time Zone: " + time_zone); 
    alert("Latitude: " + latitude); 
    alert("Longitude: " + longitude); 
}); 

$.get("http://freegeoip.net/json/", function (response) { 
 
    $("#ip").html("IP: " + response.ip); 
 
    $("#address").html("Location: " + response.city + ", " + response.region_name); 
 
    $("#details").html(JSON.stringify(response, null, 4)); 
 
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<h3>Client side IP geolocation using <a href="http://freegeoip.net">freegeoip.net</a></h3> 
 

 
<hr/> 
 
<div id="ip"></div> 
 
<div id="address"></div> 
 
<hr/>Full response: <pre id="details"></pre>

+0

https के अंतर्गत काम करता है, ipinfo.io जैसे अन्य विकल्प भुगतान किए जाते हैं। धन्यवाद! –

0

यह https://ip-api.io भू स्थान एपीआई के साथ संभव है। यह देश, शहर, ज़िप कोड, निर्देशांक, नेटवर्क, एएसएन, टाइमज़ोन प्रदान करता है। jQuery के साथ उदाहरण के लिए:

$(document).ready(function() { 
    $.getJSON("http://ip-api.io/api/json", 
     function(data){ 
      console.log(data); 
     } 
    ); 
}); 

इसके अलावा https://ip-api.io चेकों टीओआर, सार्वजनिक प्रॉक्सी और स्पैमर डेटाबेस और इस जानकारी के साथ-साथ प्रदान करता है।

उदाहरण प्रतिक्रिया:

{ 
    "ip": "182.35.213.213", 
    "country_code": "US", 
    "country_name": "United States", 
    "region_code": "CA", 
    "region_name": "California", 
    "city": "San Francisco", 
    "zip_code": "94107", 
    "time_zone": "America/Los_Angeles", 
    "latitude": 32.7697, 
    "longitude": -102.3933, 
    "suspicious_factors": { 
    "is_proxy": true, 
    "is_tor_node": true, 
    "is_spam": true, 
    "is_suspicious": true // true if any of other fields (is_proxy, is_tor_node, is_spam) is true 
    } 
} 
0

मैं https://ipdata.co बनाया है, यह करने के लिए एक ठोस समाधान प्रदान करने के लिए नीचे दिए गए बेला इसके साथ खेलने के लिए देखते हैं। यह कई उपयोगी डेटापॉइंट्स देता है, जैसे - स्थान: देश (नाम और कोड), क्षेत्र, शहर इत्यादि, ईकॉमर्स - मुद्राकोड, मुद्रा चिह्न और टाइमज़ोन।

आईपीडाटा में 10 वैश्विक अंतराल हैं जो प्रत्येक दिन 800 एम अनुरोध करने में सक्षम हैं।

$.get("https://api.ipdata.co", function (response) { 
 
    $("#ip").html("IP: " + response.ip); 
 
    $("#city").html(response.city + ", " + response.region); 
 
    $("#response").html(JSON.stringify(response, null, 4)); 
 
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h1><a href="https://ipdata.co">ipdata.co</a> - IP geolocation API</h1> 
 

 
<div id="ip"></div> 
 
<div id="city"></div> 
 
<pre id="response"></pre>

http://jsfiddle.net/zK5FN/3074/

संबंधित मुद्दे