从Wordpress的Javascript调用PHP函数
我在这里读到了大概30-40多个关于它的问题,但没有一个能够实现。我之所以说“不能”,可能是因为我错过了一些东西,或者试图让他们在wordpress上工作遇到了一些困难从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_按钮] 我
- 我在其中一页上有一个按钮。该按钮是用短代码Ultimate创建的,它可以有一个onclick值
- 我创建了一个名为faucad.js的文件,并将其引用放到该页面的标题部分。我可以通过单击该按钮成功触发该.js函数
function execJS() {
do_shortcode([my_shortcode cmd="take"]);
}
- 问题是,无论我在那个里写了什么代码,都不能触发我的短代码。 短代码是用一个代码片段插件创建的,就像这样李>
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)