在不刷新表单的情况下获取选择值


Get the select value without refreshing the form

使用这段代码,我可以看到打印的每个选项值,但每次选择一个选项时页面都会刷新。服务器正确地获取了post数据,所以我只需要在不刷新的情况下完成它。谢谢。问候。

<form action="" method="post">
   <select name="day" onchange="this.form.submit();">
      <option>Please select a date</option>
      <option value="Mon">Monday</option>
      <option value="Tue">Tuesday</option>
      <option value="Wed">Wednesday</option>
      <option value="Thu">Thursday</option>
      <option value="Fri">Friday</option>
   </select>
</form>
<script type="text/javascript">
   $('#day').change(function() 
   {
      $.ajax({
           type: 'post',
           url: "day.php",
           data: $("form.day").serialize(),
       });
        return false;
   });
</script>
<?php 
include 'day.php'; ?>

day.php

<?php
$day = $_POST['day'];
echo $day;
?>

我想你需要这个:

<标题> e.preventDefault ();

//add your id="day"

 <select name="day" id="day" onchange="this.form.submit();">
        $('#day').change(function(e) 
           {
             e.preventDefault();
              $.ajax({
                   type: 'post',
                   url: "day.php",
                   data: $("form.day").serialize(),
               });
                return false;
           });

更新onchange以调用Javascript函数,该函数将数据复制到另一个表单中的隐藏字段,并使用Ajax提交该表单。

您也可以选择直接通过Ajax提交数据,而不需要额外的表单,但是对于可能需要频繁完成的事情,我发现尽可能减少带宽是很有用的。

我可以看到<p id=..>打印的每个选项值,而无需刷新页面。但是post数据没有传递给day.php..

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<html>
<head>
<script>
    function postSelection(selectObject) {
        var day = window.dateForm.day.value = selectObject.options[selectObject.selectedIndex].value;
        var dataString = "day=" + day;
        $.ajax ({
        type:"post",
        url: "day.php",
        data:dataString,
        success: function (response) {
            $("#list").html(response);
        }
      });
        return false;
    }
</script>
</head>
<body>
<form name="displayForm">
<select name="day" onchange="return postSelection(this)">
<option>Please select a date</option>
<option value="Mon">Monday</option>
<option value="Tue">Tuesday</option>
<option value="Wed">Wednesday</option>
<option value="Thu">Thursday</option>
<option value="Fri">Friday</option>
</select>
</form>
<form action="" method="post" name="dateForm">
<input type="hidden" name="day">
</form>
<?php include 'day.php'; ?>
</body>
</html>