繁体   English   中英

在AJAX中使用GET方法

[英]Using GET Method with AJAX

我有一个PHP表单,其中包含一个名为“ Travelling from:”的字段。 该字段是一个下拉框,其中有4个选项(路线)可供选择。

该字段的HTML如下:

<form id="bookingform" action="http://www.example.com/wp-content/themes/theme1/ajax-getvalues.php" method="get"> 
    <p>
        <b>Travelling from:</b><br>
        <select name="from" id="from" style="-webkit-appearance: menulist-button; width: 300px; position: absolute; height: 30px; font-size: 13px; padding: 5px;">
            <option value="">Select a Route...</option>
            <?php
            while ($row= mysqli_fetch_array($route)) {
                echo "<option value='". $row['Route'] ."'>" . 
                          $row['Route'] . 
                     "</option>";
            }
            ?>
        </select>
    </p><br><br>
</form>

在该文件的头部,我有以下代码侦听选择列表的更改并进行AJAX调用;

 <script type="text/javascript">
 $(document).ready(function($) {
     var route_id = 'from'; //Route ID
     $('#'+route_id).change(function(e) {
         //Grab the chosen value on route change
         var selectroute = $(this).val();
         $.ajax({
             url: 'http://www.example.com/wp-content/themes/theme1/ajax-getvalues.php?from='+ encodeURIComponent(selectroute),
             success: function(data) {
                 alert(data);
             },
             error: function (xhr, ajaxOptions, thrownError) {
                 alert(xhr.status + " "+ thrownError);
             }
         });
     });
 });
 </script>

上面的代码中的警报出现,并按预期从下拉框中选择了值,这使我更加困惑。

最后,PHP文件(ajax-getvalues.php)具有以下代码来接收值;

但是$ selectroute似乎是空的。

我在PHP文件中使用以下代码测试$ select路由是否为空;

<?php
$connection = mysqli_connect("localhost", "user", "password", "dbname");

$selectroute = mysqli_real_escape_string($connection, $_GET['from']);
if  ($selectroute != "") {
    $result = mysqli_query($connection, "SELECT DATE_FORMAT(SailingTime,'%h:%i %p') AS FormattedTime FROM wp_timetable WHERE Route_ID = 1 AND '$selectvalue' BETWEEN StartDate AND EndDate");
}
echo '<option value="">Please select a time...</option>';

while($row = mysqli_fetch_array($result))
{
    echo '<option value="'.$row['FormattedTime'].'">' . $row['FormattedTime'] . "</option>";
    echo $row['FormattedTime'] ."<br/>";
}

mysqli_free_result($result);
mysqli_close($connection);

基本上,如果$selectroute不为空,则在表格的另一个下拉列表中产生结果。 但是不会产生结果-因此$selectroute为空。

问题是成功回调函数selectroute作用只是表单元素的值。

var url = 'http://www.example.com/wp-content/themes/theme1/ajax-getvalues.php';
$.ajax({
    url: url + '?from=' + encodeURIComponent(selectroute),
    success: function(data) {
        alert(data);
        // I think you want to append the ajax response to the form.
        $('#bookingform').append($(data));
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status + " "+ thrownError);
    }
});

另外,在您的PHP脚本中,您不会使用$selectroute做任何事情,并且有未初始化的变量$selectvalue

<?php
$connection = mysqli_connect("localhost", "user", "password", "dbname");

$selectroute = mysqli_real_escape_string($connection, $_GET['from']);

// initialize $selectvalue to today date
$selectvalue = '2015-03-12';

$query = "SELECT DATE_FORMAT(SailingTime,'%h:%i %p') AS FormattedTime
          FROM wp_timetable
          WHERE Route_ID = 1 
          AND '$selectvalue' BETWEEN StartDate AND EndDate";

if  ($selectroute != "") {
    $result = mysqli_query($connection, $query);

    if ($result) {
        echo '<select>';
        echo '<option value="">Please select a time...</option>';

        while($row = mysqli_fetch_array($result)) {
            echo '<option value="'.$row['FormattedTime'].'">' .
                      $row['FormattedTime'] . 
                 '</option>';
        }
        echo '</select>';
        mysqli_free_result($result);
    }
}

mysqli_close($connection); 

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM