Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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
从Wordpress的Javascript调用PHP函数_Javascript_Php_Wordpress - Fatal编程技术网

从Wordpress的Javascript调用PHP函数

从Wordpress的Javascript调用PHP函数,javascript,php,wordpress,Javascript,Php,Wordpress,我在这里读到了大概30-40多个关于它的问题,但没有一个能够实现。我之所以说“不能”,可能是因为我错过了一些东西,或者试图让他们在wordpress上工作遇到了一些困难 我在其中一页上有一个按钮。该按钮是用短代码Ultimate创建的,它可以有一个onclick值 [su_按钮url=“#”style=“flat”background=“#ed2079”size=“2” wide=“yes”icon=“icon:pencil”onclick=execJS();]点击我![/su_按钮] 我

我在这里读到了大概30-40多个关于它的问题,但没有一个能够实现。我之所以说“不能”,可能是因为我错过了一些东西,或者试图让他们在wordpress上工作遇到了一些困难

  • 我在其中一页上有一个按钮。该按钮是用短代码Ultimate创建的,它可以有一个onclick值
[su_按钮url=“#”style=“flat”background=“#ed2079”size=“2” wide=“yes”icon=“icon:pencil”onclick=execJS();]点击我![/su_按钮]

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

function execJS() {
   do_shortcode([my_shortcode cmd="take"]);
}

  • 问题是,无论我在那个里写了什么代码,都不能触发我的短代码。 短代码是用一个代码片段插件创建的,就像这样
添加_-shortcode('my_-shortcode','my_-shortcode_-array')

它有一个名为“cmd”的属性,应该是“take”

它不承认这个功能,无法与wordpress搭建桥梁

do_shortcode([my_shortcode cmd=“take”])

我如何访问该短代码?我想要实现的就是在点击按钮时触发一个短代码

如果我的问题很复杂,请告诉我调整一下

谢谢

更新:

如果我将数据类型设置为“json”,我会得到“UncaughtTypeError:Cannotreadproperty'type'of null”错误。如果我将其设置为“html”,我总是会收到“失败”消息,并且代码不会触及do_shortcode()函数

JS

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

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' );
}
试着改变

success: function(response) {
   if(response.type == "success") {
      alert("Success!")
   }
   else {
      alert("Failure!")
   }
}

success
函数根据以下参数传递这些参数:


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

从Javascript调用PHP函数。。。简而言之,你不能。PHP在服务器上运行,JavaScript在客户机上运行。。。你可以用Ajax来解决这个问题,不可能用Javascript直接调用PHP。可以使用AJAX请求访问PHP函数。关于这一点,这里有几个问题。我似乎无法使它起作用。我已经在我原来的帖子中添加了完整的代码内容。请检查您何时能够访问。您使用的是什么版本的jQuery?谢谢。现在,我可以获得成功消息,但仍然没有触及该.php中的do_shortcode()函数。更新:我认为jQuery是JQMigrate 1.4.1作为wordpress的默认版本。不幸的是,我没有足够的wordpress经验来调试这个部分
success: function(response, status) {
   alert(status);
}
(Anything data, String textStatus, jqXHR jqXHR)