Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在前端的WP插件中进行AJAX调用_Javascript_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 如何在前端的WP插件中进行AJAX调用

Javascript 如何在前端的WP插件中进行AJAX调用,javascript,jquery,ajax,wordpress,Javascript,Jquery,Ajax,Wordpress,我正在开发可湿性粉剂插件,当用户输入ID时,该插件将获得针对ID的帖子。它在管理方面运行良好。我已经按照示例通过AJAX调用获取数据,但现在我尝试在前端执行此操作,任何人都可以在前端输入ID并获得结果。我已经删除了我用来在管理端创建页面的函数。现在我有3个函数,名为: 你好 ajax_脚本() ajax_处理器() 我试着用下面的钩子来注册,但它不起作用 添加操作('admin_footer','ajax_script') 添加_操作(“wp_ajax_my_操作”,“ajax_脚本”) 添加

我正在开发可湿性粉剂插件,当用户输入
ID
时,该插件将获得针对
ID
的帖子。它在管理方面运行良好。我已经按照示例通过AJAX调用获取数据,但现在我尝试在前端执行此操作,任何人都可以在前端输入
ID
并获得结果。我已经删除了我用来在管理端创建页面的函数。现在我有3个函数,名为:

  • 你好
  • ajax_脚本()
  • ajax_处理器()
  • 我试着用下面的钩子来注册,但它不起作用

    • 添加操作('admin_footer','ajax_script')
    • 添加_操作(“wp_ajax_my_操作”,“ajax_脚本”)
    • 添加操作(“wp\u ajax\u nopriv\u my\u action”、“ajax\u script”)
    hello\u word()
    函数包含文本字段和按钮的代码。 我从模板文件中调用了
    hello\u word()
    函数,它被正确显示,但当我单击按钮时,AJAX不起作用。我发现的问题是,
    ajax\u script()
    没有加载,并且在源代码的调试模式下,当我单击按钮时,什么都没有


    那么,当我从模板文件调用
    hello\u word()
    时,如何正确地加载ajax函数呢?

    您有点搞混了

    add_action('wp_ajax_my_action','your_handler')
    添加操作('wp_ajax_nopriv_my_action','your_handler')
    用于添加函数,该函数将分别处理登录用户和来宾用户对ajax调用的响应

    add_操作('wp_footer','ajax_script')-页脚的前端操作是
    wp\u footer
    ,只有在主题真正调用它时,它才会起作用。但是更好的做法是为插件创建一个包含所有js的单独的.js文件,而不是内联输出。
    要使脚本排队,可以使用以下代码

    function enqueue_assets()
    {
        wp_enqueue_script('your_plugin_js', plugins_url('/my.js', __FILE__), array('jquery'), false, true); //true will put it into the footer
        wp_localize_script('your_plugin_js', 'your_plugin_ajax_object', array('ajax_url' => admin_url('admin-ajax.php', ((is_ssl()) ? 'https' : 'http')))); // your url for ajax call wil be available as your_plugin_ajax_object.ajax_url
        //wp_enqueue_style('your_plugin_css', plugins_url('/my.css', __FILE__)); // you can output css here too if you want
    }
    add_action('wp_enqueue_scripts', 'enqueue_assets');
    

    你可以在任何你喜欢的地方调用你的
    hello\u world
    函数。

    如果我把所有的js代码放在单独的文件和队列脚本中,在这个简单的调用函数hello\u word之后,ajax就会工作得很好,或者我必须做更多的事情?我想如果我调用hello\u word函数,那么只有这个函数会被执行,而不是其他函数,或者该文件中的所有代码都将被执行?@coder
    hello\u world
    应该只返回用于用户输入的内容。如果你给我看3个函数的代码,比如说paste bin,我会更正需要更正的任何东西,如果你不明白的话,我会解释。事实上,这对管理员来说很好,在这里,你可以看到我刚刚对上面的原始代码做了一些修改,但是这些修改不起作用。如果你想保留内联js,看起来还不错,不过你必须定义
    ajaxurl
    ,因为在前端它是未定义的。如果您想让它也为来宾服务,请添加
    add_操作(“wp_ajax_nopriv_dobsondev_ajax_tester_approval_操作”,“dobsondev_ajax_tester_ajax_handler”)