我有一个下拉列表,其默认选择值为小。我希望当页面加载时,预先选择的值应存储在php变量中。我没有提交按钮。
HTML部分
<form action="" method = "post">
<label style="font-weight:bold; font-size:18px; margin-top:8px; float:left; margin-right:40px;">Select Size: </label>
<select class="styled" name="size" style="float:right; margin-right:80px;">
<option value="Small" selected>Small</option>
<option value="Medium">Medium</option>
<option value="Large">Large</option>
</select>
</form>
Php Part
<?php
$selected_val='';
if( isset ( $_POST['size'] ) ) {
$selected_val = $_POST['size'];
}
echo $selected_val;
?>
但是,当我回应 $ selected_val 时,这并没有给我什么。任何人都可以指出错误是什么以及如何做到这一点..提前致谢。
答案 0 :(得分:1)
这是您需要使用AJAX完成任务的完整解决方案,当您加载文档时,它将自动获取所选值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>q</title>
</head>
<body onload="submitthis();">
<form action="" method = "post">
<label style="font-weight:bold; font-size:18px; margin-top:8px; float:left; margin-right:40px;">Select Size: </label>
<select onchange="submitthis();" id="sizes" class="styled" name="size" style="float:right; margin-right:80px;">
<option value="Small" selected="">Small</option>
<option value="Medium">Medium</option>
<option value="Large">Large</option>
</select>
<div id="myDiv"></div>
</form>
<script>
function submitthis()
{
var val = document.getElementById('sizes').value;
console.log(val);
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","reply.php?size="+val,true);
xmlhttp.send();
}
</script>
你需要在同一文件夹中创建另一个文件,其中存在名为reply.php的html文件并粘贴以下代码
<?php
$selected_val='';
if(isset($_GET['size'])){
$selected_val = $_GET['size'];
}
echo $selected_val;
?>
我做了另一个小改动,当你从选择框更改值时,它也将加载该交叉值。