[英]AJAX to post javascript variable to php
我的問題是:使用AJAX,如何將Javascript中的變量傳遞給PHP代碼?
我知道PHP是服務器端的,而Javascript是客戶端的,我已經讀了至少十二個問題,幾乎都問同樣的問題,但每個問題我似乎都缺少了一些東西,因為它們都不起作用。 實質上,我使用地理位置來獲取頁面加載時用戶的經度和緯度,並且出於測試目的,它在相應的div中將其顯示在頁面上。 這部分工作正常。 當我嘗試將數據提交到我的PHP變量時,它沒有連接或出現了問題,或者這部分代碼完全不正確,我的問題就來了。
這是我用於整體測試的頁面“ test.php”:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
x = navigator.geolocation;
x.getCurrentPosition(success, failure);
function success(position) {
var mylat = position.coords.latitude;
var mylng = position.coords.longitude;
$('#latit').html(mylat);
$('#longit').html(mylng);
}
function failure() {
$('#latit').html("<p>It didn't work</p>")
}
//sends javascript 'mylat' and 'mylng' from above to php script//
$.post("test.php", { lat: mylat , lng : mylng});
</script>
</head>
<body>
<!--only to validate that geolocation function works-->
<div id="latit"></div>
<div id="longit"></div>
<div id="splash">
<h2>Click the button</h2>
<form action="test.php" method="post">
<input type="submit" name="submit" value="Do the thing!" />
</form>
</div>
<?php
//used to validate passing of coordinates
if (isset($_POST['lat'])) {
echo $lat = $_POST['lat'];
}
if (isset($_POST['lng'])) {
echo $lng = $_POST['lng'];
}
?>
</body>
</html>
我試圖將JS'mylat'和'mylng'分別傳遞到PHP的$ lat和$ lng中。 衷心感謝您的任何幫助,對於這個重復的問題,我深表歉意。我不確定是否有更好的方法來構想我要的內容。
此外,如果有一種方法可以執行此操作而不必單擊任何會帶來好處的東西,但我對此一無所獲。 我一般對Web開發/編程都是新手,幾乎沒有Javascript / jQuery / AJAX的經驗。
首先,這一行:
$.post("test.php", { lat: mylat , lng : mylng});
應該在成功功能中。 它現在所在的位置在瀏覽器解析<script>
標記后立即執行,但是在獲取位置時需要發出POST
請求。
其次,您發出的ajax
請求將不會對已經加載的頁面產生影響,因為除非處理,否則其結果將消失。
您可以做的是在body
元素上使用$ .load() ,這將用接收到的內容替換當前body
的內容:
$(document.body).load("test.php", { lat: mylat , lng : mylng});
盡管更好的方法是讓腳本處理通過ajax
發送的位置,然后將接收到的內容呈現到html頁面的自定義元素中。
名為“成功”的函數是定義變量myLat和myLng的地方。 當您向服務器發出POST請求時,您試圖傳遞變量的值,但是沒有任何結果,對嗎? 這樣做的原因是因為您的發布請求無權訪問該功能的范圍。
嘗試將$ .post請求移到成功函數中,使其內容如下:
function success(position) {
var mylat = position.coords.latitude;
var mylng = position.coords.longitude;
$('#latit').html(mylat);
$('#longit').html(mylng);
$.post("test.php", { lat: mylat , lng : mylng});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.