我为网站制作了一个表单,用户可以在其中发布自己喜欢的网站名称和链接。我也希望每次用户提交表单时都没有页面加载。我想要的是当用户提交表格时,他或她必须接受或阅读使用该服务的条款和条件。我添加了一个复选框,并谷歌如何传递验证服务器端的数据或如何提交表单而不加载页面。我在youtube上遇到了一个非常好的教程,他写了html php和ajax代码。我实现他的代码,看到服务器端收到的所有数据都接受复选框。我尝试在PHP的服务器端操作代码很少,但没有任何作用。当我尝试没有Ajax它工作。 即使我没有检查它,我总是收到复选框ON ..有什么帮助吗?
HTML:
<form action="checkbox1.php" method="post">
<input name="name" id="name" type="text"/><br/>
<input type="text" id="name2" name="name2"><br/>
<input type="checkbox" id="checkbox" name="checkbox"><br/>
<input type="submit" id="submit" name="submit">
</form>
Ajax:
$(document).ready(function() {
$("form").submit(function(event){
event.preventDefault();
var name = $("#name").val();
var name2 = $("#name2").val();
var checkbox = $("#checkbox").val();
var submit = $("#submit").val();
$(".text-danger").load("checkbox1.php", {
name: name,
name2: name2,
checkbox: checkbox,
submit: submit
});
});
});
php:
<?php
print_r($_POST);
if (isset($_POST["submit"])) {
$name = $_POST["name"];
$name2 = $_POST["name2"];
$checkbox = $_POST["checkbox"];
$nameerror = false;
$name2error = false;
$checkboxerror = false;
$errorEmpty = false;
if (empty($_POST["name"]) || empty($_POST["name2"])) {
echo "There is something wrong with your error";
$errorEmpty = true;
} elseif (empty($_POST["checkbox"])) {
echo "Please check the box";
$errorEmpty= true;
} else {
echo "Thanks!";
}
}
?>
结果:Array ( [name] => Mark [name2] => Otto [checkbox] => on )
如果这个问题没有标签,我很抱歉,因为我不知道它是服务器端问题或ajax代码问题所以我添加了所有类别。
答案 0 :(得分:1)
由于javascript中的这一行,您总是在PHP中获取复选框的值:
var checkbox = $("#checkbox").val();
该行获得&#34;值&#34;复选框元素,无论是否已选中。你可以改为做这样的事情:
var checkbox = $("#checkbox").is(":checked") ? 'on' : '';
如果选中该复选框,则会发送on
的值,如果未选中该复选框,则会发送空字符串。
答案 1 :(得分:0)
获取复选框的值将始终返回&#39; on&#39;。您应该尝试检查属性而不是值。
在您的Ajax代码中,试试这个:
$("#checkbox").prop("checked");