【问题标题】:how to change geojson search parameters from html form如何从 html 表单更改 geojson 搜索参数
【发布时间】:2018-12-11 14:30:19
【问题描述】:

我使用数据库中的 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 文件包含到表单文件中时,它给了我 parese 错误,因为表单不是 json 格式,所以任何人都知道如何发送参数?

【问题讨论】:

  • 请注意,您可以使用date("Y-m-d H:i:s", strtotime("today"))date("Y-m-d H:i:s", strtotime("tomorrow")) 来简化日期变量。

标签: javascript php jquery html geojson


【解决方案1】:

我不确定你想要完成什么,但如果目标是将表单作为 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);

【讨论】:

  • 我需要发送一个新的数字参数,以更改选择查询中的参数,我需要从表单中执行此操作,希望您能理解我在说什么,谢谢帮助:D
  • 哦。这可能会更简单一些,因为您的原始代码几乎就是这样做的。如果您不介意页面重新加载,您可以将原始表单标签更改为:
  • 当然,如果您使用的是 geoJsonData 变量,那么您可能不会看到任何区别,因为该调用忽略了表单的内容。
  • 非常感谢,简直不敢相信:D
  • 当我使用该操作时,它会向我发送 json 文件,并向我显示 json 结果,我不想被重定向到该页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多