如何使用HTML表单运行PHP脚本而不重定向到新页面?

如何使用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

我有一个简单的html表单,如下所示

  <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
}