Wordpress AJAX没有't工作-响应0
Wordpress AJAX doesn't work - response 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' );
只需确保已将函数'fq_tag_support_callback()'放入插件的主文件中即可。
我在这里看到了一些问题。操作应该在数据对象中,而不是作为jQueryAjax参数。回调函数中的数据也存储在$_POST变量中。
function test_callback() {
$whatever = $_POST['whatever'];
echo $whatever;
die();
}
add_action('wp_ajax_nopriv_fqtag', 'test_callback');
add_action('wp_ajax_fqtag', 'test_callback');
function print_js() {
?>
<script type="text/javascript">
jQuery.ajax({
url: <?php echo admin_url('admin-ajax.php'); ?>,
type: 'POST',
data: {
action: 'fqtag',
whatever: 'text'
},
success: function (output) {
alert(output);
}
});
</script>
<?php
}
add_action('wp_print_footer_scripts', 'print_js', 1000);
?>
相关文章:
- 响应动画手风琴不工作
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 自动完成搜索无法正常工作,请不要迭代$中的所有元素.每个ul-li都会及时显示响应
- ajax响应为空后JQuery无法工作
- 服务工作线程是否可以响应同步 XHR 请求
- Jquery Post与JSON响应工作
- 如何在没有 Web 服务器的情况下做出响应.js工作
- 悬停和焦点上的响应式 jQuery 工具提示无法正常工作
- 如何才能让响应式幻灯片在Internet Explorer中工作
- Ajax关于成功响应不工作的警报c#
- 谷歌表单响应无法从网站上工作
- Wordpress AJAX没有't工作-响应0
- 使用nodeJS和phantomJS返回网络请求和响应,仅在控制台中工作
- 用于循环的xhr响应不工作
- 网站响应能力-Iphone需要双击链接才能工作
- 响应式灯箱无法在iPhone中工作
- 响应滑块需要刷新才能工作
- Ajax响应只工作一次-使用PHP的购物车
- 拼写检查器无法在tinymce 4.0中工作(非JSON响应)
- 如何使脚本工作/响应