簡體   English   中英

AJAX將javascript變量發布到php

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM