WordPress(TwentyTen主题):无需打开新页面即可获得搜索结果

时间:2011-07-14 15:07:51

标签: php jquery wordpress search twenty-ten-theme

我在WordPress网站上工作。

我想使用AJAX方法将搜索结果加载到当前打开的页面中。为了能够做到这一点,我需要获得执行搜索的PHP代码的输出,而无需打开新页面。

通常,在您键入搜索词后,WordPress会打开包含以下URL的新页面:

mydomain.com/?s=searchword

执行搜索的PHP代码的输出显示在该页面的#container div中。

问题:如何在不打开新页面的情况下获取搜索结果,以便我可以使用jQuery将它们加载到当前打开的页面中?

我很感激你的建议!

1 个答案:

答案 0 :(得分:2)

这个插件非常适合你。您可能希望查看插件的源代码,并了解如何自行利用它。

http://wordpress.org/extend/plugins/threewp-ajax-search/screenshots/

我想您也可以自己调用搜索页面,解析#container值,然后自己解析结果列表。如果您需要帮助,请告诉我。否则我认为已经开发的插件非常方便。

根据要求,这里有一些关于我认为我可能会这样做的更多想法。这些都不是测试人员,但我的一般想法是合理的。您必须根据需要调整一些内容以匹配您的安装。例如Get vs Post。超时。请求数据。

  1. 使用jQuery的ajax调用来请求搜索页面。

    $.ajax({
                    async: true,
                    data: $dataToSend,
                    datatype: 'xml',
                    beforeSend: function() {
                        console.log('rq');
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        console.log('error');
                    },
                    success: function(xml, textstatus, jqXHR) {
                        //Process Response Data
                    },          
                    timeout: 10000,
                    type: 'POST',
                    url: 'http://' + document.location.host + '/search'     
            });
    
  2. 处理响应并剔除您感兴趣的数据。 http://www.switchonthecode.com/tutorials/xml-parsing-with-jquery

    $(xml).find('div [class =“post”]')。each(function(){    $(“#currentPage”)。append($(this)+“
    ”); });

  3. SO拒绝对列表位进行代码阻止。对此感到抱歉。