如何从 html 表单更改 geojson 搜索参数
how to change geojson search parameters from html form
我使用数据库中的 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>
这里是来自 geojson 文件的查询(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 文件包含到表单文件时,它给我 parese 错误,因为表单不是 json 格式,所以有人知道如何发送参数吗?
我不确定你到底想完成什么,但如果目标是将表单作为 json 传递给 PHP,那么你需要使用 serialize() 函数。此外,您目前没有通过 AJAX 调用传递任何数据。让我们解决这个问题。
首先,将您的表单方法更改为 post 并为您的表单添加一个 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);
我使用数据库中的 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>
这里是来自 geojson 文件的查询(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 文件包含到表单文件时,它给我 parese 错误,因为表单不是 json 格式,所以有人知道如何发送参数吗?
我不确定你到底想完成什么,但如果目标是将表单作为 json 传递给 PHP,那么你需要使用 serialize() 函数。此外,您目前没有通过 AJAX 调用传递任何数据。让我们解决这个问题。
首先,将您的表单方法更改为 post 并为您的表单添加一个 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);