如何从HTML表单更改geojson搜索参数

时间:2018-12-11 14:30:20

标签: javascript php jquery html geojson

我使用php从数据库中创建了一个geojson文件,但是我需要能够使用主页上的表单来更改查询参数,这是表单和加载的json文件:

<script src="js/jquery-3.3.1.min.js" type="text/javascript"></script>

            <div class="form">
                <form method="get"> 
                    <input type="text" name="number" id="number"  placeholder="to"  >
                    <input type="text" name="startDate" id="sDate"  placeholder="From"  >
                    <input type="text" name="endDate" id="eDate" placeholder="till"><br/>
                    <input type="submit" name="Search" id="Search" value="Search">
                </form> 
            </div>
            <script>
                var geoJsonData = $.ajax({
                    url: "json2.php",
                    dataType: "json",

                    success: console.log("succes"),
                    error: function (xhr) {
                        alert("Json error")
                    }
                })

               </script>

这是来自geoj​​son文件(json2.php)的查询:

$number = $_GET['number'];

$startD = date('d.m.Y');
 $endD = date('d.m.Y');

$startData = strtotime($startD . '00:00:00');
$pgsqlstartdata = date('Y-m-d H:i:s', $startData);

$endData = strtotime($endD . '23:59:59');
 $pgsqlenddata = date('Y-m-d H:i:s', $endData);

 $query = pg_query($connect, "SELECT number, state, date, lat,long "
    . "FROM schema.table "
    . "WHERE number = '$number' AND "
    . "data BETWEEN '$pgsqlstartdata' and '$pgsqlenddata' order by data asc limit 100 ");

当我尝试将json fle包含在表单文件中时,由于表单不是json格式,这给我带来了严重的错误,因此任何人都有如何发送参数的想法吗?

1 个答案:

答案 0 :(得分:0)

我不确定您要完成什么,但是如果目标是将表单作为json传递给PHP,则需要使用serialize()函数。另外,您当前没有通过AJAX调用传递任何数据。让我们解决这个问题。

首先,更改表单方法以发布并向表单添加ID,以便我们直接访问它:

<form method="post" id="geoform">

接下来,更改AJAX调用中的第一行:

var geoJsonData = $.ajax({
    url: "json2.php",
    dataType: "json",
    type: "post",
    data: $("#geoform").serialize(),

最后,在PHP中反序列化并输出表单,以便您可以看到正在使用的内容:

<?php
    $formData = json_decode($_POST);
    var_dump($formData);