下拉框 onchange 调用 PHP 函数

10
我将尝试使用下面的代码从下拉菜单中调用一个PHP函数。
有没有更简洁的方法来实现这个功能?
代码如下:
<html>
<head>
</head>
<body>
    <?php
        function OnSelectionChange() {
            echo("OK IT WORKS");
        }    
    ?>
<section>
    <select onchange="OnSelectionChange()">
        <option value='' disabled selected>Assign Driver</option>
        <option value='4353'>Steve Jobs</option>
        <option value='3333'>Ian Wright</option>
        <option value='66666'>Mark James</option>
    </select>
</section>    
</body>
</html>

2
你不能使用JavaScript调用PHP函数。 - node_modules
2
你可以在变化时调用一个js函数。然后编写一个ajax来在js函数中调用php文件。 - Santhy K
6个回答

17

使用 PHP,而不是 JavaScript,可以简单地从下拉列表中获取所选值。

<html>
<head>
<title>Country</title>
</head>
<body>
<form method="POST" action="">
    Select Your Country 
    <select name="country" onchange="this.form.submit()">
        <option value="" disabled selected>--select--</option>
        <option value="india">India</option>
        <option value="us">Us</option>
        <option value="europe">Europe</option>
    </select>
</form>
<?php
   if(isset($_POST["country"])){
       $country=$_POST["country"];
       echo "select country is => ".$country;
   }
?>
</body>
</html>


5
简单使用jQuery的Ajax
首页
<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
        <script>
            $(document).ready(function(){
            $('#myDropDown').change(function(){
                //Selected value
                var inputValue = $(this).val();
                alert("value in js "+inputValue);

                //Ajax for calling php function
                $.post('submit.php', { dropdownValue: inputValue }, function(data){
                    alert('ajax completed. Response:  '+data);
                    //do after submission operation in DOM
                });
            });
        });
        </script>
    </head>
<body>
    <select id="myDropDown">
        <option value='' disabled selected>Assign Driver</option>
        <option value='4353'>Steve Jobs</option>
        <option value='3333'>Ian Wright</option>
        <option value='66666'>Mark James</option>
     </select>

</body>
</html>

在submit.php中。
<?php
function processDrpdown($selectedVal) {
    echo "Selected value in php ".$selectedVal;
}        

if ($_POST['dropdownValue']){
    //call the function or execute the code
    processDrpdown($_POST['dropdownValue']);
}

对于简单的JS AJAX使用,可以使用XMLHttpRequest


似乎无法进入 PHP 文件来回显。是否有办法让它像一个简单的链接一样直接进入文件? - Mark James
你的意思是将页面重定向到一个 PHP 文件吗? - Santhy K

1

<html>
<head>
<title>Country</title>
</head>
<body>
<form>
    Select Your Country 
    <select name="country" onchange="this.form.submit()">
        <option value="" disabled selected>--select--</option>
        <option value="india">India</option>
        <option value="us">Us</option>
        <option value="europe">Europe</option>
    </select>
</form>
<?php
   if(isset($_GET["country"])){
       $country=$_GET["country"];
       echo "select country is => ".$country;
   }
?>
</body>
</html>


1
欢迎@Prmaja公司 - 您应该添加一个说明,解释您的额外/修改代码的作用。 - KJH

1

不使用 JavaScript 函数无法将 onchange 事件与 PHP 函数连接。

<script>
 function OnSelectionChange()
 {
  alert("OK IT WORKS");
 }
</script>

0

无法这样做,请使用 JavaScript 函数代替

<html>
<head>
</head>
<body>

<script>
function OnSelectionChange()
{
 alert("OK IT WORKS");
}
</script>

<section>
 <select onchange="OnSelectionChange()">
  <option value='' disabled selected>Assign Driver</option>
  <option value='4353'>Steve Jobs</option>
  <option value='3333'>Ian Wright</option>
  <option value='66666'>Mark James</option>
 </select>
</section>


</body>
</html>

0

这个小改动对我来说非常有效。非常感谢vivekcs0114,此外他很好地避免了JS和需要Ajax解决方案,在大约200次可怜的尝试后,都是彻底失败的。

<form method="post" action="">
<select method="post" name="areasel" onchange="this.form.submit()"> 
<option value="Choose one">Choose one</option>
<option value="Complete Airframe">Complete Airframe</option>
<option value="Armstrong Siddeley">Armstrong Siddeley</option>
<option value="Something">Something</option>
</select>
</form>
<?php
if(isset($_POST["areasel"]))
{
$type=$_POST["areasel"];
echo "<BR>Do some SQL stuff using :".$type;
}
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接