Jquery Wordpress中的Ajax搜索功能

Jquery Wordpress中的Ajax搜索功能,jquery,ajax,wordpress,Jquery,Ajax,Wordpress,我曾尝试使用admin-ajax.php文件将ajax搜索功能添加到我的站点,但没有成功。我在网站的其他部分也使用JQuery,由于此代码,脚本停止工作。当我把它注释掉时,其他脚本(比如滑动导航栏)又开始工作了。这是密码- ----functions.php------ ----JS文件---- 我在函数文件中使用了wp_enqueue_脚本作为排队脚本。当我添加这段代码时,所有jquery功能都会停止,对于搜索页面,我会被重定向到默认页面。提交按钮单击事件也不会被触发。有人能给点建议吗?我正在

我曾尝试使用admin-ajax.php文件将ajax搜索功能添加到我的站点,但没有成功。我在网站的其他部分也使用JQuery,由于此代码,脚本停止工作。当我把它注释掉时,其他脚本(比如滑动导航栏)又开始工作了。这是密码- ----functions.php------

----JS文件----


我在函数文件中使用了wp_enqueue_脚本作为排队脚本。当我添加这段代码时,所有jquery功能都会停止,对于搜索页面,我会被重定向到默认页面。提交按钮单击事件也不会被触发。有人能给点建议吗?我正在尝试一切,但似乎没有任何效果。

您不能使用获取模板部分。以json格式传递数据并使用该数据

function wpa56343_search()
{
    global $wp_query;
    $search = $_POST['search_val'];
    $args = array(
        's' => $search,
        'posts_per_page' => 5
    );
    $results = new WP_Query( $args );
    echo json_encode( $results );
    exit;
}
还更改了js代码

jQuery(document).ready(function($) {
    $("#search-container").click(function(e){
        e.preventDefault();
        var search_val=$("#s").val();
        $.ajax({
            type:"POST",
            url: "./wp-admin/admin-ajax.php",
            data: {
                action:'wpa56343_search',
                search_string:search_val
            },
            success:function(data){ alert(data);
                $('#results').append(data);
            }
        });
    })
});

所以我解决了这个问题。耶!我没有成功地使上述代码正常工作,但我在David Albert的博客上找到了我的解决方案(谢谢David!)

这篇文章写得很好,很容易理解。在“我的名字”的“注释”部分下,您可以找到特定于搜索的代码。(检索和呈现结果)。
希望这有帮助

大多数wordpress模板使用jQuery.noConflict(),因此
$
可能未定义。是否在控制台中抛出错误?尝试将就绪处理程序更改为
jQuery(document)。就绪(函数($){
我对此相当陌生。我在哪里调试此程序?或看到错误?我在浏览器窗口中看不到错误。该处理程序已经是jQuery(document)准备好了…你指的是哪一个?点击F12并在控制台中查看…只需按我显示的方式将
$
参数添加到
准备好了
中,然后查看helps@charlietfl-哦,谢谢!这个控制台太棒了!我的问题还没有解决,但至少现在生活更轻松了。谢谢你指出这一点。我登录是为了感谢你的帮助我们的问题,它解决了我的修修补补。感谢Bhumi的回复。下面是发生的情况-1。$(“#搜索容器”)。单击…将被调用。$(“#搜索按钮”)。单击…由于某种原因不起作用。2.var search_val=$(“#s”)。val()无论我在搜索框中输入什么,都始终返回null。3。$(“#结果”)。append(响应);在console Uncaught ReferenceError中出现以下错误:未定义响应您必须使用所需id更改#id,并在解析后使用数据更改响应。进行了一些更改。但现在,当我点击提交时,默认功能不起作用。出现默认搜索行为并加载search.php文件。我是如果我已经清楚地写了e.preventDefault();有什么想法吗?你有没有用你的欲望id替换搜索容器?并试着向onclick发出警报并检查onclick我做了什么,Bhumi。警报从未被调用。
function wpa56343_search()
{
    global $wp_query;
    $search = $_POST['search_val'];
    $args = array(
        's' => $search,
        'posts_per_page' => 5
    );
    $results = new WP_Query( $args );
    echo json_encode( $results );
    exit;
}
jQuery(document).ready(function($) {
    $("#search-container").click(function(e){
        e.preventDefault();
        var search_val=$("#s").val();
        $.ajax({
            type:"POST",
            url: "./wp-admin/admin-ajax.php",
            data: {
                action:'wpa56343_search',
                search_string:search_val
            },
            success:function(data){ alert(data);
                $('#results').append(data);
            }
        });
    })
});