我有一个表单(#searchform),我想多次提交而不重新加载页面,所以我使用jQuery和post-method。我想存储在名为 target (数组,列表或其他)的变量中检查哪些复选框,以及在变量 diff 中选择了哪个单选按钮。
变量也需要在PHP中可用。我尝试在很多方面将它们作为 ftar 和 fdiff 传递,但没有任何效果。
非常感谢任何帮助!
submit.js中的JQuery:
$(document).ready(function () {
var target = new Array();
$('#searchform input:checked').each(function() {
target.push($(this).attr('value'));
});
var diff = $('#searchform').find("input[class='diff']").val();
$.post('index.php', {ftar: target, fdiff: diff});
});
index.php中的HTML和PHP:
<!DOCTYPE html>
<html lang="en-US">
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="js/submit.js"></script>
</head>
<body>
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$link = new mysqli("localhost", "root", "password", "mytable");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$target = $_POST['ftar'];
$diff = $_POST['fdiff'];
?>
<div id="right">
<div class="content">
<form id="searchform" method="POST" action="/">
<input type="checkbox" value="Check1">
<input type="checkbox" value="Check2">
<input type="checkbox" value="Check3">
<input type="radio" class="diff" value="Radio1">
<input type="radio" class="diff" value="Radio2">
</form>
</div>
</div>
</body>
</html>
答案 0 :(得分:1)
你应该使用
$.post('index.php', JSON.stringify({ftar: target, fdiff: diff}));
答案 1 :(得分:1)
您是否尝试过使用$(#searchform).serialize();?
$.post('index.php', $(#searchform).serialize());
您还应该在表单
中为字段添加名称<form id="searchform" method="POST" action="/">
<input name="check[]" type="checkbox" value="Check1">
<input name="check[]" type="checkbox" value="Check2">
<input name="check[]" type="checkbox" value="Check3">
<input name="radio[]" type="radio" class="diff" value="Radio1">
<input name="radio[]" type="radio" class="diff" value="Radio2">
</form>
将字段作为数组获取(仅传递标记的字段)
$target = $_POST['check'];
print_r($target)
$target = $_POST['radio'];
print_r($target)`
答案 2 :(得分:0)
你应该根据html输入添加name =“ftar”和name =“fdiff”。然后序列化,JSON.stringify()或只提交。