将 javascript 变量值发送到不同页面上 PHP 中的 sql 查询

send javascript variable value to sql query in PHP on different page

我有 2 个 elements.Auto 搜索栏 和地图(mapbox-gl)

  1. 我正在通过主页的 xmlHttpRequest 加载“get_pin.php”(“monitor.php”)。
  2. "get_pin.php" 有查询 $results=$myPDO->query("SELECT * FROM clients where id =".$user_id); 使用此查询,我获取了搜索其姓名的人的 ID,然后获取该 ID 的数据,创建了一个 geojson,这是 get_pin.php 的 json 编码结果。 "geometry":{"type":"Point","coordinates":[143.3601,42.6500000000001]},"type":"Feature","properties":[]}

现在,我得到, SELECT * 来自 id = 1 的客户端,通过硬编码 value.So 即使我搜索不同人的 ID。它在同一位置加载标记。

我试图解决这个问题- “monitor.php” HTML

<tr>//table appears after the id is searched
<th>id</th>
<td><label id="lbl_id" name="lbl_id">'.$row["id"].'</label></td>
</tr>//further I also get other info of user in the same table

在同一页上-

function load_data(query, typehead_search = 'yes') {
            $.ajax({
            url: "dbconn.php",
            method: "POST",
            data: { query: query, typehead_search: typehead_search },
            success: function (data) {
                //show the table inside employee_data div
                $('#employee_data').html(data);
                //get the id and store it in js variable 
                var l_id = document.getElementById('lbl_id').textContent;
                    alert(l_id);//I am getting the correct id
                    $.ajax({
                        type : "POST",
                        url  : "get_pin.php",
                        data : {l_id : l_id},
                        success: function(data){  
                                console.log(data);
                                },
                        error: function(err){
                            console.log(err);
                        }
                    });
            }
        });
    }

在 get_pin.php 我正在获取数据

    if (isset($_POST["l_id"])) {
         require ("db_conn.php");  
         $user_id =$_POST["l_id"];
            try {             
            $results=$myPDO->query("SELECT * FROM clients where id =".$user_id); 
            /*get data convert it to a geojson*/

错误- ajax 中的成功函数为我提供了特定 id 的正确 geojson 输出。 但是在我调用 get_pin.php 的 xmlhttprequest 中,响应是空白的。 我得到-

Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.request.onload

如何将 id 的值从 table 传递到 get_pin.php 并在地图上显示该标记?

我得到了解决方案。 我使用 XMLHttpRequest 来传递变量,而不是 jQuery ajax。

//this is to get and show the initial position of the user
var url = 'get_marker.php?id=';

map.on('load', function() {
  var request = new XMLHttpRequest();
  //I have added setInterval here to get updated value 
  var clearIntervalValue = window.setInterval(function() {

    var id = document.getElementById('l_id').textContent;

    url = 'get_marker.php?id=';
    url = url + id;
    request.open('GET', url, true);

    request.onload = function() {

      if (this.status >= 200 && this.status < 400) {
        console.log(this.response);

        var json = JSON.parse(this.response);

        map.getSource('drone').setData(json);
        map.flyTo({
          center: json.geometry.coordinates,
          speed: 0.5
        });

      } else if (this.status == 404) {
        clearInterval(clearIntervalValue);
      }

    };
    request.send();

  }, 2000);
  //rest of the code...
});
<tr>
  <th>id</th>
  <td><label id="l_id" name="l_id">'.$row["id"].'</label></td>
</tr>

在get_marker.php

<?php
  //check if the id is set
  if (isset($_GET["id"])) 
  {
   //include database connection file
   require ("db_conn.php");
   $results=$myPDO->query("SELECT * FROM clients where id =".$_GET["id"]); 
  }
?>