我希望使用Jquery检索在同一表单中选择的所有不同选项。顺便说一句,主要目标是检索提交的结果。 情况是这样的:
<form id="myform" action="result.php" method="post">
<select id="select1" name="select[]">
<option value="A1">1</option>
...
</select>
<select id="select2" name="select[]">
<option value="A1">1</option>
...
</select>
<input type="submit">
</form>
在result.php中,有这个函数:
if (!empty($_POST['select'])) {
$selects = array();
foreach ($_POST['select'] as $check) {
$selects[] = $check;
}
if(count($selects)==0){
echo "ERROR";}else{echo "OK"}
}
如何在有表格的页面中显示带有result.php回显结果的提醒?
答案 0 :(得分:1)
执行PHP代码时,您又在服务器端。无论您何时构建HTML输出,都可以在此处包含由PHP创建的脚本标记,其中包含以下内容:
<script>
alert("<?php echo $selectResults; ?>");
</script>
这是非常难以维护的(你不应该在你的HTML输出中以这种方式混淆PHP代码),但由于我不知道你如何创建你的页面,我希望你明白这一点。
了解执行代码的位置非常重要,而且由于您使用的是PHP(即服务器端),因此没有直接的方法将JavaScript警报“发送”回客户端(此处忽略WebSockets)。
另一种方法是通过AJAX将结果发布到服务器,获取服务器的响应(“ERROR”,“OK”或其他),并在AJAX回调中使用它来提醒消息。同样,由于我不知道你如何构建你的页面,我不知道哪个更可行。
答案 1 :(得分:1)
这需要一些解密,我假设您需要保持您的选择通用。我没有使用无效的select[]
命名,而是通过jQuery检索了所有<select>
。不确定这是否符合要求。
如果您需要将它们命名为select[]
,除了以下解决方案之外,我建议您查看Get values from multiple select boxes with same name? Including its value with jquery and php。
<强> HTML 强>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#mySubmitAjax').click(function(e) {
var selects = $('select');
var selects_results = "";
selects.each(function(i,v) {
selects_results += i + '=' + $(v).val() + '&';
});
$.ajax({
url: 'result.php',
method: 'POST',
data: selects_results,
success: function(data, status, jqXHR) {
alert(data);
}
})
});
});
</script>
</head>
<body>
<form name="myForm">
<select>
<option value="1">one</option>
<option value="2">two</option>
</select>
<select>
<option value="1">one</option>
<option value="2">two</option>
</select>
<button type="button" id="mySubmitAjax">Submit w/AJAX</button>
</form>
</body>
</html>
<强> result.php 强>
<?php
$post = $_POST;
$results = [];
foreach($post as $p) {
$results[] = $p['v'];
}
print json_encode($results);
?>