Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
Php 如何使用AJAX在Wordpress上正确刷新数据_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Php 如何使用AJAX在Wordpress上正确刷新数据

Php 如何使用AJAX在Wordpress上正确刷新数据,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我正在尝试在Wordpress中刷新仪表板上的小部件 我的插件是用PHP编写的,但我正在尝试添加Jquery/AJAX,以便在进行某些更改时刷新每个小部件 PHP中的函数将下载并存储文件,然后将信息显示到小部件中 我遇到的问题是:文件已成功下载并存储。但是新的信息没有显示出来。它保持不变。 我相信这可能很简单,但我一直在努力让它发挥作用,但没有成功 以下是我的代码示例: <?php add_action( 'admin_footer', 'my_action_javascript' );

我正在尝试在Wordpress中刷新仪表板上的小部件

我的插件是用PHP编写的,但我正在尝试添加Jquery/AJAX,以便在进行某些更改时刷新每个小部件

PHP中的函数将下载并存储文件,然后将信息显示到小部件中

我遇到的问题是:文件已成功下载并存储。但是新的信息没有显示出来。它保持不变。 我相信这可能很简单,但我一直在努力让它发挥作用,但没有成功

以下是我的代码示例:

<?php

add_action( 'admin_footer', 'my_action_javascript' ); // Write our JS below here


function my_action_javascript() { ?>
<script type="text/javascript" >
jQuery(document).ready(function($) {

    var data = {
        'action': 'refresh_function',
    };


            setInterval(function() {
    $.get(ajaxurl, data, function (result) {

    });

            },20000);

});
</script> <?php
}

add_action('wp_ajax_refresh_function', 'display_function');

jQuery(文档).ready(函数($){
风险值数据={
“操作”:“刷新函数”,
};
setInterval(函数(){
$.get(ajaxurl、数据、函数(结果){
});
},20000);
});
频道->项目作为$item)
{            
回声“;
回显“$item->title.”;
回显“”。设置段落长度显示($item->description,250)。“(…)”

”; 全球$wpdb; $query=$wpdb->prepare('SELECT ID FROM.$wpdb->posts.'WHERE post_title=%s',$item->title); $cID=$wpdb->get_var($query); 回声“
”; 回声“; } 回声“; }
我的理解是,我的AJAX将调用该函数,它将正常工作。我猜我错了,因为一旦我使用AJAX下载了一个新文件,屏幕上就不会显示任何新内容


谢谢

好的,首先,远程设置脚本。下面是我做的一个演示:

function ajaxurl(){
    wp_enqueue_script('product-selector', get_template_directory_uri().'/js/ajax.js', array('jquery')); // Remotely place script in /js/ folder in my theme.
    wp_localize_script('product-selector', 'MyAjax', array(
        // URL to wp-admin/admin-ajax.php to process the request
        'ajaxurl' => admin_url('admin-ajax.php'),
        )
    );
}

add_action('wp_head', 'ajaxurl');
接下来,您需要确保没有priv和admin排队:

add_action('wp_ajax_nopriv_ajax_callback', 'ajax_callback');
add_action('wp_ajax_ajax_callback', 'ajax_callback');
在我的脚本中,“ajax\u回调”是我运行的php函数。因此,您需要进行相应的调整

另外,在您的
js
中,您需要使
ajaxUrl
看起来像:

MyAjax.ajaxurl
如果您直接使用我的代码而不进行调整


WordPress上的AJAX入门有点困难,但一旦开始,它就有了意义。使用开发人员工具并切换到Chrome上的“控制台”选项进行调试,查看返回的信息。

您的ajax回调函数为空。选择要将ajax输出放入其中的元素,然后将其innerhtml设置为该代码

$.get(ajaxurl, data, function (result) {
    $( '#my-dashboard-widget-content-element' ).html( result );
});
确保您有适当的操作集,如另一个答案中所示:

add_action('wp_ajax_refresh_function', 'display_function' );
add_action('wp_ajax_nopriv_refresh_function', 'display_function' );
此外,还应该使用nonce来验证其是否是授权的ajax请求。在php函数的结尾,不要忘记死亡()

有关全面概述,请检查

add_action('wp_ajax_refresh_function', 'display_function' );
add_action('wp_ajax_nopriv_refresh_function', 'display_function' );