如何使用HTML表单运行PHP脚本而不重定向到新页面?
我有一个简单的html表单,如下所示如何使用HTML表单运行PHP脚本而不重定向到新页面?,php,Php,我有一个简单的html表单,如下所示 <form action="search.php" method="get"> <p>Company Name: <input type="text" name="name" /> </p> <p> <input type="submit" value = "Search"/> </p> </fo
<form action="search.php" method="get">
<p>Company Name:
<input type="text" name="name" />
</p>
<p>
<input type="submit" value = "Search"/>
</p>
</form>
很简单,但问题是我被重定向到search.php,它与此表单页面位于同一目录中。我希望能够在同一页的表单下方显示搜索结果,而无需重定向到search.php。你有什么建议?使用
然后您可以从javascript调用ajax客户机服务器请求,很容易看到
例如,如果有id为search form的搜索表单和id为search results的容器来显示搜索结果,则可以:
<script type="text/javascript">
function submit_search() {
var request_data = $('#search-form').serailize();
$.post('search.php', request_data, function(data, textStatus, jqXHR){
$('#search-results').html(data);
}, 'html');
}
</script>
<form id="search-form" action="search.php" method="post" onsubmit="submit_searh();return false;">
<input type="text" name="q">
<input type="submit" value="Search!">
</form>
<div id="search-results"></div>
您可以使用此库通过ajax提交表单 例如:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>
// wait for the DOM to be loaded
$(document).ready(function() {
// bind 'myForm' (is an id of form) and provide a simple callback function
$('#myForm').ajaxForm(function(response) {
//handle search results
alert("Thank you for your search!");
});
});
</script>
您可以使用AJAX实现这一点。使用javascript或用于javascript的任何库,并使用表单中的值向search.php发送AJAX请求。你需要自己收集这些。您还需要使search.php返回可以插入页面而不是整个页面的内容。您可以将表单设置为在同一页面上重定向
<form action="yourPage.php" method="post">
<p>Company Name:
<input type="text" name="name" />
</p>
<p>
<input type="submit" value = "Search"/>
</p>
然后在页面中的表单后显示结果
这种方法意味着页面将被重新加载,如果您不希望这种情况发生,您必须使用Ajax提交表单并从Ajax请求中获取搜索结果 或者刷新当前页面并查找帖子,然后以这种方式设置页面。不允许使用Javascript,因为这不适用于web浏览器。这可能应该是@nickb您是对的,对不起。添加了exmaple的用法,并且您的应用程序不像其他答案所建议的那样依赖JavaScript。虽然两种方法都可以,但最好的方法是两者兼而有之:如果浏览器允许javascript,则采用Ajax方法;如果浏览器不允许javascript,则发布到同一页面!但是他没有重定向到search.phpYeah就提到了,我不明白他是说他不想重新加载页面,所以解决方案是ajax,还是不想让访问者进入另一个页面,他不关心页面刷新,在这种情况下,在同一个页面中实现表单验证和处理是一个有效的解决方案!我同意不清楚+1对你来说:
if(isset($_POST['a_field_of_your form']){
//treat the values of the form
}