कैसा रहेगा:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(आपके पास localStorage.lon
भी था .longitude
. के बजाय )
चूंकि मान (स्ट्रिंग) चर में हैं, इसलिए आपको उन्हें जोड़ने की जरूरत है, न कि उन्हें स्ट्रिंग में डालने की।
साथ ही, चूंकि आप डेटाबेस में सहेजने के लिए इन चीजों को अपने PHP में पास कर रहे हैं, अर्थात् बोलते हुए, आपको एक POST अनुरोध का उपयोग करना चाहिए ... जिसे AJAX अनुरोधों के साथ अलग तरीके से संभाला जाता है।
अपने PHP में, आपको उपयोग करने की आवश्यकता है:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
वास्तव में GET अनुरोध के साथ भेजे गए मान प्राप्त करने के लिए। हालांकि SQL इंजेक्शन से बचने के लिए इन मानों से बचना चाहिए।
साथ ही, मुझे यकीन नहीं है कि आप onload
क्यों सेट कर रहे हैं AJAX अनुरोध की संपत्ति। इसके बजाय, onreadystatechange
. का उपयोग करें संपत्ति...कुछ इस तरह:
oReq.onreadystatechange = function () {
if (oReq.readyState === 4) {
if (oReq.status > 199 && oReq.status < 400) {
console.log("successful response");
} else {
console.log("failed response: " + oReq.status);
}
}
};
.readyState
संपत्ति अपने राज्य को संदर्भित करती है, जहां 4
इसका मतलब है कि यह हो गया है (प्रतिक्रिया वापस आ गई है)। .status
संपत्ति HTTP स्थिति कोड को संदर्भित करती है। आम तौर पर 200
. के बीच और 400
है अच्छा है। मुझे पता है मैंने लोगों को केवल देखा है 200
. की जांच करें (रेंज नहीं)।
अपडेट करें:
अनुरोध में POST पैरामीटर पास करने के लिए, आप उन्हें URL में नहीं जोड़ते - आप उन्हें .send()
में पास करते हैं तरीका। यहां आपके कोड के साथ एक उदाहरण दिया गया है:
oReq.open("POST", "snap.php", true);
oReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
oReq.send("lat=" + encodeURIComponent(localStorage.latitude) + "&lon=" + encodeURIComponent(localStorage.longitude));
और उन्हें PHP में पुनः प्राप्त करने के लिए, आप उपयोग करेंगे:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];