将数据从Javascript / HTML发送到php进行搜索

时间:2013-07-18 14:05:34

标签: php javascript

我正在尝试使用php实现一个简单的搜索引擎。我是否应该在我的服务器上连续运行.php并发帖说JSON或者我可以以某种方式向服务器发布内容并且仅在发布内容时才运行脚本?无论哪种方式,我都不知道该怎么做。我也读过一些关于CRON工作的文章。这适用于此吗?

编辑:用户看到搜索框。查询到搜索框的类型。按下进入。使用AJAX发送到服务器的JSON查询。服务器使用JSON查询发送来搜索某些文档的索引,而不是搜索网站。服务器以JSON格式返回结果。然后将这些结果解释并显示给用户。

我已经在php中进行了搜索设置。我对php很新。

EDIT2:我已经使用弹性搜索进行了搜索设置。我只想知道从Javascript / HTML站点向服务器上的pHp发送信息的最佳做法。我为不够清楚而道歉。

3 个答案:

答案 0 :(得分:1)

CRON作业不适用,除非你想安排搜索并在搜索结束时通知你的用户(即使它可能,它并不是你真正想要的)。

AJAX非常方便,特别是如果您想添加自动完成等功能。但是,如果您希望页面重新加载,使用搜索结果重新呈现整个页面内容或重定向到具有这些结果的另一个页面,则AJAX不是必需的,因为您必须执行2个HTTP请求而不仅仅是之一。

在我看来,您需要做的就是使用单输入表单,并通过GET请求发布搜索字段。

例如:

<form action="/search_results.php" method="get">
<input type="text" name="query" />
<button type="submit">Search</button>
</form>

哪个会重定向到搜索结果页面,其URL如下所示:/search_results.php?query = some+simple +search

然后,在您的PHP代码中,您可以使用$ _GET ['query']获取该查询参数,您可以直接将其传递给您的搜索引擎(弹性搜索)进行分析。

我从未尝试过弹性搜索,但如果必须传递JSON数据,则可以使用以下命令对查询进行编码:

$search = json_encode(array('query' => $_GET['query']));

很难准确,因为你没有提供预期的搜索格式,但我认为这应该让你走上正轨。

如果您有任何疑问,请随时发表评论:)

答案 1 :(得分:0)

HTML:

<form method="get" action="search.php>
<input type="text" name="search" />
<input type="submit" name="submit" value="Search" />
</form>

的search.php:

<?php

$whatTheyWantToSearch = $_GET['search'];

// $whatTheyWantToSearch now holds the value that was submitted in the form

答案 2 :(得分:0)

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form id="myForm"> 
    <input id="request" type="text" size="20"><br/><br/>  
    <input type="submit" value="search">  
</form>  

<div id="search_result"></div>  

<script>  
    $(document).ready(function(){  

        $('#myForm').submit(function(){  
            $.ajax({  
                type: "POST",  
                url: "search.php",  
                data: "search_request="+$("#request").val(),  
                success: function(html){  
                    $("#search_result").html(html);  
                }  
            });  
            return false;  
        });  

    });  
</script>