Wordpress AJAX不起作用-响应0

我想在我的插件中添加AJAX支持,而这个简单的东西有很大的问题。WordPress不允许我使用普通的AJAX,我需要使用WordPress版本。

在任何时候,WordPress函数(应生成输出)都返回0。我认为原因是WP不会触发“函数”。我试图强制该功能多次运行,但是我不知道我可以改进什么。

<?php

public function widget( $args, $instance ) {

$options = get_option('Free_Quotation_options');

?>

<script type="text/javascript" >

jQuery(document).ready(function($) {

var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";

jQuery.ajax({

url: ajaxurl,

type: 'POST',

action: 'fqtag',

data: {

'whatever': 'text'

},

success: function (output) {

$('#secondary').append(output);

}

});

});

</script>

<?php

add_action( 'wp_ajax_fqtag', 'fqtag' );

add_action( 'wp_ajax_nopriv_fqtag', 'fqtag' );

function fqtag() {

global $wpdb;

echo 'echo';

die();

}

}

我尝试添加alert(’echo’); 测试功能,但没有任何效果。我认为AJAX无法运行适当的功能:fq_tag_support_callback()。

一开始,我对ajaxurl变量有疑问。未定义。这不是正常情况。我尝试通过使用以下方法解决此问题:

var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";

您有什么想法,我该如何解决这个问题?

-–编辑—与David讨论后,我得到了这样的文件(所有时间都不起作用)

<?php

/*

Plugin Name: TEST PLUGIN

Description: TEST

Author: Krzysztof Kubiak

Version: 1.0

*/

function Test_01_settings_init(){

register_setting( 'Test_01_settings_filed', 'Test_01_options', 'Test_01_validate' );

}

add_action('admin_init', 'Test_01_settings_init' );

function T01_init_method() {

wp_enqueue_script('jquery');

}

add_action('init', 'T01_init_method');

function Test_01_menu_page(){

add_menu_page( 'Test_01', 'Test_01', 'manage_options', 'T01_menu_page', 'T01_add_page' );

echo my_test();

}

add_action('admin_menu', 'Test_01_menu_page');

function my_test(){

echo 'Function test';

}

function T01_add_page() {

echo 'TEST_01_plugin';

}

function Test_01_validate($input) {

}

//AJAX FROM HIRE

function test_callback() {

$whatever = 8;

echo $whatever;

die();

}

add_action( 'wp_ajax_nopriv_fqtag', 'test_callback', 1 );

add_action( 'wp_ajax_fqtag', 'test_callback', 1 );

function print_js() { ?>

<script type="text/javascript">

jQuery.ajax({

url: 'wp-admin/admin-ajax.php',

type: 'POST',

action: 'fqtag',

data: {

'whatever': 'text'

},

success: function (output) {

alert(output);

}

});

</script>

<?php

}

add_action('wp_print_footer_scripts', 'print_js', 1000);

?>

回答:

去掉

<script>alert('echo');</script>

如果您检查控制台,您的回应应该是echo。我怀疑以上所有代码都在您的插件功能文件中。基本上,php函数应放在函数文件中。

jQuery应该放置在您要从中接收响应的模板中。

将其放在函数文件中…从类中删除jquery …

add_action('wp_print_footer_scripts', 'print_js', 1000);

function print_js() { ?>

<script type="text/javascript">

jQuery(document).ready(function(){

jQuery.ajax({

url: 'wp-admin/admin-ajax.php',

type: 'POST',

data: {

'action': 'test_callback',

'whatever': 'text'

},

success: function (output) {

alert(output);

}

});

});

</script>

<?php

}

将此内容移出课堂…

 function test_callback() {

$whatever = 8;

echo $whatever;

die();

}

add_action( 'wp_ajax_nopriv_testaction', 'test_callback' );

add_action( 'wp_ajax_testaction', 'test_callback' );

以上是 Wordpress AJAX不起作用-响应0 的全部内容, 来源链接: utcz.com/qa/397917.html

回到顶部