首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Javascript为Wordpress调用PHP函数

从Javascript为Wordpress调用PHP函数
EN

Stack Overflow用户
提问于 2018-05-08 13:29:34
回答 1查看 4K关注 0票数 2

我在这里读过30到40多个关于它的问题,但没有实现其中的任何一个。我说“不能”是因为我可能错过了什么或者试图让他们在wordpress上工作有一些困难。

  • 我在其中一页上有个按钮。该按钮是创建的短代码的终极,它可以有一个onclick值。

“su_button url="#”style=“平面”background=“# Me 2079”size="2“wide=”是“icon=”图标:铅笔“onclick=execJS();点击我

  • 我创建了一个名为faucad.js的文件,并将其引用到页面的head部分。通过单击该按钮,我可以成功地触发.js的函数。

含量faucad.js

代码语言:javascript
复制
function execJS() {
   do_shortcode([my_shortcode cmd="take"]);

}

  • 问题是,不管我在那里写了什么代码,都不能触发我的短代码。短代码是用代码片段插件创建的,它就是这样的;

add_shortcode(‘my_短路码’,'my_shortcode_array‘);

它接受一个名为"cmd“的属性,它应该是”带“。

它不认识这个功能,不能用wordpress搭建一座桥梁;

do_shortcode(my_shortcode cmd="take");

我怎样才能访问那个短代码?我想要实现的就是在单击按钮时触发一个短代码。

如果问题复杂,请告诉我量身定做。

谢谢,

更新:

如果我将dataType设置为"json“,就会得到"Uncaught:'type‘of null”错误。如果我把它作为"html",我总是会收到“失败”消息,代码不会碰do_shortcode()函数。

JS

代码语言:javascript
复制
function gxfd_claim() {
    $(document).ready( function() {
        $.ajax({
            type : "post",
            dataType : "json",
            url : myAjax.ajaxurl,
            data : {action: "gxfd_claim_function"},
            success: function(response) {
                if(response.type == "success") {
                    alert("Success!")
                }
                else {
                    alert("Failure!")
                }
            }
                })
                    })
}

插件的PHP

代码语言:javascript
复制
add_action('wp_ajax_nopriv_gxfd_claim_function', 'gxfd_claim_function');
add_action('wp_ajax_gxfd_claim_function', 'gxfd_claim_function');
function gxfd_claim_function() {
    do_shortcode('[gx_faucad cmd="claim"]');
    die();
}

add_action( 'init', 'my_script_enqueuer' );
function my_script_enqueuer() {
   wp_register_script( "faucad", WP_PLUGIN_URL.'/gx-internal/faucad.js', array('jquery') );
   wp_localize_script( 'faucad', 'myAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));        

   wp_enqueue_script( 'jquery' );
   wp_enqueue_script( 'faucad' );
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-08 21:53:54

试着改变

代码语言:javascript
复制
success: function(response) {
   if(response.type == "success") {
      alert("Success!")
   }
   else {
      alert("Failure!")
   }
}

代码语言:javascript
复制
success: function(response, status) {
   alert(status);
}

success函数根据http://api.jquery.com/jQuery.ajax传递这些参数

代码语言:javascript
复制
(Anything data, String textStatus, jqXHR jqXHR)

可能发生的情况是,PHP脚本不返回数据,因此data (response)参数是null,当您尝试从null参数访问type时,它会抛出TypeError。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50234838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档