如何用AJAX添加一个子菜单?

时间:2012-05-02 作者:Rory Rothon

我要做的是点燃add_submenu_page() 在我的插件选项页面上的ajax中运行。

当我单击“添加联盟”链接时,我想显示一个将保存到数据库中的ajax输入[文本],然后使用插入的值添加子菜单页。

我也希望能够删除条目以及新创建的页面。

1 个回复
SO网友:xsonic

由于没有任何给定的代码,您无法获得完整的工作示例,因此我将向您展示一个粗略的wordpress AJAX设置:

把这些都放进去functions.php:

<?php
add_action(\'wp_head\', \'my_action_javascript\');
function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
    jQuery.ajax(
        type: \'POST\',
        url: <?php echo admin_url(\'admin-ajax.php\'); ?>,
        data: {
            action : \'your_AJAX_call\',
            league : $(\'input#league\').val() // get the user input
        },
        success: function( response, textStatus, XMLHttpRequest ) {
            $(\'ul#menu\').append(response);
        }
        error: function( XMLHttpRequest, textStatus, errorThrown ) {
            alert(\'An error occured\');
        }
    );
});
</script>
<?php
}

add_action( \'wp_ajax_nopriv_your_AJAX_call\', \'your_AJAX_call\' );
add_action( \'wp_ajax_your_AJAX_call\', \'your_AJAX_call\' );
function your_AJAX_call() {
    $league = $_POST[\'league\'];
    // do sanitization
    // if sanitization is ok:
        // save to DB
        // echo sth like \'<li><a href="new-league">New League</a></li>\'
    exit;  // won\'t work without!
}
我建议返回一个json编码的数组,以便提供更详细的信息。一、 e.如果卫生处理因时间太短而失败:

// Your sanitization logic here
$arr = array (\'success\'=>false,\'error\'=>\'Length must be at least 3 Characters\');
echo json_encode($arr);

http://php.net/manual/de/function.json-encode.php

然后在你的response ajax调用的功能:

var response = jQuery.parseJSON(response);
alert(\'An error occured: \' + response.error);

http://api.jquery.com/jQuery.parseJSON/

下面是一篇关于在wordpress中使用ajax的好文章:

http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/

编辑:

完全忘记了这一点:

add_submenu_page() 无法工作,因为此时已呈现页面。

结束

相关推荐

从异步上传.php的AJAX响应中获取ID

它是一个wordpress+jQuery 问题无法在stackoverflow上发布,因为我相信它也涉及wordpress知识。What I am trying to achieve:我将wordpress async media uploader附加到“add post”页的metabox上,这样用户只需将大量图像拖放到uploader中即可上载,而无需每次插入一次(请参见图片)。我正在将附件ID保存在帖子元上,以便用户可以将一个图像附加到多个帖子。Question: 当上载者将上载请求发送到async