我有一个输入和一个提交按钮的表单。
<form method='POST' action='' enctype='multipart/form-data' id="form_search">
<input type='hidden' name="action" id="form_1" value='1' />
</span><input id="query" type="text" name="mol" value="">
<input type='submit' value='Search' name="Search" id="Search" />
在表单提交表单输入数据转到php下面的代码
if (isset($_POST['Search'])) {
$_SESSION["query"] = $_POST["mol"];
$_SESSION["action"] = $_POST["action"];
}
我想避免在表单提交时刷新页面。我试过e.preventDefault()并返回false; 我的java脚本中的方法但没有工作(这个方法帮助我从页面刷新,但不允许我发送数据到PHP代码)
请帮我解决这个问题,请为此问题建议使用ajax代码。
答案 0 :(得分:4)
页面刷新会删除您之前的数据,因此为了保留它您可以使用$ .post()或$ .ajax()
您可以通过在事件处理函数
中添加这两件事之一来阻止页面刷新表示纯粹的js
return false;
对于jquery你可以使用
e.preventDefault(); // e is passed to handler
您的完整代码将类似于
在js中使用 $。post()
function checkfunction(obj){
$.post("your_url.php",$(obj).serialize(),function(data){
alert("success");
});
return false;
}
HTML
<input type='submit' onclick="return checkfunction(this)" />
或与onsubmit相同的效果
<form onsubmit="return checkfunction(this)" method="post">
答案 1 :(得分:0)
如果没有ajax,您只需在PHP中添加checked属性即可。例如,如果您的广播组的名称为radio
,其中一个的值为a
,则另一个b
:
<?php
$a_checked = $_POST['radio'] === 'a';
$b_checked = $_POST['radio'] === 'b';
?>
<input type="radio" name="radio" value="a"<?=($a_checked ? ' checked' : '')?>></input>
<input type="radio" name="radio" value="b"<?=($b_checked ? ' checked' : '')?>></input>
因此,当用户提交表单并再次显示时,即使页面刷新,用户也会提交表单。
答案 2 :(得分:0)
<input type="radio" name="rbutton" id="r1">R1
<input type="radio" name="rbutton" id="r2">R2
<input type="button" id="go" value="SUBMIT" />
<div id="result"></div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#go').click(function(){
var val1 = $('input:radio[name=rbutton]:checked').val();
var datastring = "partialName="+val1;
$.ajax({
url: "search.php",
type: "POST",
data: datastring,
success: function(data)
{
$("#result").html(data);
}
});
});
});
</script>