首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WordPress插件中调用AJAX?

如何在WordPress插件中调用AJAX?
EN

Stack Overflow用户
提问于 2014-09-18 08:52:35
回答 1查看 4.4K关注 0票数 3

我希望通过AJAX将MySQL表(自定义表)数据获取到我的管理面板。当用户单击按钮获取数据时,不需要刷新页面。我已经在PHP上创建了它,但是在WordPress中添加AJAX文件的位置呢?

这是我的密码。注意,当用户单击取取数据按钮调用AJAX以获取结果时,我正在尝试制作插件。我在插件中添加了JS文件

我从主插件文件中调用js。

代码语言:javascript
复制
function school_register_head()  {
    $siteurl = get_option('siteurl');
    $url2 = $siteurl . '/wp-content/plugins/' . basename(dirname(__FILE__)) . '/jquery-1.3.2.js';
    $url3 = $siteurl . '/wp-content/plugins/' . basename(dirname(__FILE__)) . '/script.js';

    echo "<script src=$url2 type=text/javascript></script>\n";  
    echo "<script src=$url3 type=text/javascript></script>\n"; 
}
add_action('admin_head', 'school_register_head');

script.js文件

代码语言:javascript
复制
$(document).ready(function() {
    $("#display").click(function() {          
      $.ajax({    //create an ajax request to load_page.php
        type: "GET",
        url: "display.php",             
        dataType: "html",   //expect html to be returned                
        success: function(response){                    
            $("#responsecontainer").html(response); 
            //alert(response);
        }

    });
});
});

display.php文件

代码语言:javascript
复制
<?php
global $wpdb;
$rows = $wpdb->get_results("SELECT postid from `wp_school_post`");
echo "<table class='wp-list-table widefat fixed'>";
echo "<tr><th>ID</th><tr>";
foreach ($rows as $row ){
    echo "<tr>";
    echo "<td>$row->postid</td>";
    echo "</tr>";}
echo "</table>";
?>

html按钮

代码语言:javascript
复制
<input type="button" id="display" class="button" value="Fetch All Data" onClick="fetch_data();" />
 <div id="responsecontainer" align="center">
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-18 19:59:17

如果“将AJAX文件放在哪里”意味着如何将其包含到管理页面:最简单的方法是使用admin_enqueue_scripts(),例如,如果您在主题中实现它:

代码语言:javascript
复制
<?php    
    function load_ajax_script() {
        wp_enqueue_script("ajax-script", get_template_directory() . "/scripts/ajax-script.js");
    }
    add_action("admin_enqueue_scripts", "load_ajax_script");
?>

将此代码添加到活动主题目录中的functions.php中。

下一步将是jQuery脚本。打开与.js一起使用的wp_enqueue_script()脚本文件,并添加以下内容:

代码语言:javascript
复制
jQuery(document).ready(function() {
    jQuery("#fetch-data").click(function() {
        var script_url = "http://www.example.com/wp-content/themes/my-theme/display.php";
        var response_container = jQuery("#responsecontainer");
        jQuery.ajax({
            type: "GET",
            url:script_url,
            success:function(response) {
                response_container.html(response);
            },
            error:function() {
                alert("There was an error while fetching the data.");
            }
        });
    });
});

请注意,在调用.php文件时必须使用URL,而不是使用.php的include()时服务器上的绝对路径。根据您放置脚本的位置,可以使用$(...)jQuery(...)

现在我们必须插入调用AJAX的按钮,当然还有插入返回内容的容器。由于您没有说明它的显示位置,所以我现在只将它放在管理区域的顶部:

代码语言:javascript
复制
function display_ajax_button() {
    ?>
    <input type="button" value="Fetch data" id="fetch-data" />
    <div id="fetched-data-content"></div>
<?php
}
add_action("admin_init", "display_ajax_button");

最后,我们创建脚本本身。我刚刚复制了您的代码,并将其保存在jQuery.ajax() URL参数中定义的同一个目录中:

代码语言:javascript
复制
<?php
global $wpdb;
$rows = $wpdb->get_results("SELECT postid from `wp_school_post`");
echo "<table class='wp-list-table widefat fixed'>";
echo "<tr><th>ID</th><tr>";
foreach ($rows as $row ){
    echo "<tr>";
    echo "<td>$row->postid</td>";
    echo "</tr>";}
echo "</table>";
?>

这应该是最简单的方法。打开管理页面,试一试。让我知道它是否有效。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25908226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档