У меня есть скрипт, который использует AJAX для отображения результатов отдельного скрипта PHP на моей странице.

Однако теперь я хотел бы передать данные из формы (меню select ) в сценарий. Как мне это сделать? Я просто хотел бы использовать значение, выбранное в меню выбора, как часть предложения WHERE в моей команде SQL.


Веб-страница .

<html>
<head>
<script
  src="https://code.jquery.com/jquery-3.2.1.js"
  integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
  crossorigin="anonymous"></script>
<script type="text/javascript">

 $(document).ready(function() {

    $("#display").click(function() {                

        $.ajax({    //create an ajax request to load_page.php
          type: "GET",
          url: "display.php",             
          dataType: "html",
          data: {
              "some-var": "some-value"
          },            
          success: function(response){                    
              $("#responsecontainer").html(response);
          }

        });

    });

});
</script>
</head>
<body>

<form>
  <select id="city" name="city">
  <option value="">City:</option>
  <option value="glasgow">Glasgow</option>
  <option value="london">London</option>
  </select>
  <input type="button" id="display" value="Display All Data" />
</form>
<br>
<div id="responsecontainer">&nbsp;</div>

</body>
</html>

PHP-скрипт .

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "db";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM entries";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - City: " . $row["city"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
0
michaelmcgurk 24 Апр 2017 в 12:40

2 ответа

Лучший ответ
$("#display").click(function() {                

        $.ajax({    //create an ajax request to load_page.php
          type: "GET",
          url: "display.php",             
          dataType: "html",
          data: {
              "city": $('#city').val(),
          },            
          success: function(response){                    
              $("#responsecontainer").html(response);
          }

        });

    });
1
C. Norris 24 Апр 2017 в 09:44

Используя jquery, вы можете получить значение выбранной опции:

$('#city').val()

Таким образом, вы можете отправить это с помощью вашего запроса ajax:

$('#display').click(function(e) {
   e.preventDefault();
   $.ajax({
      type: "GET",
      url: "display.php",             
      data: {
          "city": $('#city').val()
      },            
      success: function(response){                    
          $("#responsecontainer").html(response);
      }

   });
});

Тогда в вашем PHP:

$city = $conn->real_escape_string($_GET['city']);
$sql = "SELECT * FROM entries WHERE city = '".$city."'";

Нотабене Вы должны быть очень осторожны, доверяя пользовательским переменным запросы.

1
Harry Walter 24 Апр 2017 в 09:47
43584703