【问题标题】:ajax in wordpress not calling php functionwordpress中的ajax不调用php函数
【发布时间】:2013-01-30 09:51:48
【问题描述】:

想知道是否有人可以提供帮助;我正在尝试通过 jquery 在 wordpress 模板中的表单上实现一些 ajax。

jquery 正在工作,我可以在 sucess: 部分记录控制台消息,但数据为 0,此时它应该调用 php 函数(此时在同一页面上,我可以调用它直接)

所以我猜 jquery 正在工作,正在调用 admin-ajax,它只是没有调用 php 函数。有什么想法我可能做错了吗?我不完全理解钩子,所以也许这是一个问题 - 我需要在某个地方钩子?

jquery(域将替换 cmets)

<script type="text/javascript">
    jQuery(function ($) {
        $( "#movies" ).autocomplete({
                minLength:2,
                delay:500,
                source: function( request, response ) {
                    $.ajax({
                        type: 'POST',
                        url: "http://<!--domain here -->/wp-admin/admin-ajax.php",
                        dataType: 'json',
                        data: {
                            action: 'getMoviesForCode',
                            searchString: $("#movies").val()
                        },
                        success: function( data ) {
                            response(data);
                            console.log('jjj'+data);
                        }
                    });
                }           
        });
    });
    </script> 

php 函数(在同一页面上)

<?php

    function getMoviesForCode(){
echo "
        <script type=\"text/javascript\">
        alert(\"hh\");
        </script>
    ";
   $searchString = $_POST['searchString'];
   $results = va_getMoviesForCode($searchString);  
  $results = json_encode($results);
  die($results);
}
 ?>

谢谢,

【问题讨论】:

    标签: php jquery ajax wordpress


    【解决方案1】:

    你做错了。你的 php 函数应该在你主题的 functions.php 文件中。

    然后您应该将函数挂钩到 wp_ajax_[your_action]wp_ajax_nopriv_[your_action]

    functions.php 中应包含的内容示例:

    function getMoviesForCode(){
    echo "
            <script type=\"text/javascript\">
            alert(\"hh\");
            </script>
        ";
       $searchString = $_POST['searchString'];
       $results = va_getMoviesForCode($searchString);  
      $results = json_encode($results);
      die($results);
    }
    add_action('wp_ajax_getMoviesForCode', 'getMoviesForCode');
    add_action('wp_ajax_nopriv_getMoviesForCode', 'getMoviesForCode');
    

    【讨论】:

    • 嗨,太棒了 - 我现在可以看到萤火虫响应中的返回,因此它正确调用了该函数。现在只需要让自动完成功能在现场工作,非常感谢!
    • 顺便说一下,我把它改成了 add_action('wp_ajax_getMoviesForCode', 'getMoviesForCode'); add_action('wp_ajax_nopriv_getMoviesForCode', 'getMoviesForCode'); - 我猜对了?
    • 谢谢你的链接,我去看看。了解更多关于 ajax 的知识真是太好了,我想我现在会更多地使用它!
    • 你好,如果我们写一个插件,那么我可以在插件php文件中处理后端而不在function.php中写入吗?
    • 是的,使用插件的好处是,如果你改变主题,你仍然可以使用该功能。
    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多