在ajax中从wordpress调用PHP函数?

4

reset.php文件:

 <?php 
    add_action('admin_init','popup_template_reset_options');

    function popup_template_reset_options() 
        {
        delete_option('popup_template_on');
        delete_option('popup_template_close');
        delete_option('popup_template_escape');
        delete_option('popup_template_external');
        delete_option('popup_template_home_page');
        delete_option('popup_template_all_pages');
        delete_option('popup_template_template');
        delete_option('popup_cookies_display_after_like');
        add_option('popup_cookies_display_after_like','365');
        //add_option('popup_template_on','1');
        add_option('popup_template_close','1');
        add_option('popup_template_escape','1');
        add_option('popup_template_external','1');
        add_option('popup_template_force_timer','2');
        add_option('popup_template_home_page','1');
        add_option('popup_template_all_pages','1');
        add_option('popup_template_template','2');

    }
    ?>

Script Ajax:

<script type="text/javascript">
    $(document).ready(function() {
        $('#reset_general').click(function()
        {
            $('#result1').css("display", "block");
            jQuery('#result1').animate({'opacity': '1'});

        });
    });
    function resetgeneral() {
        $.ajax({type: 'POST', url: '<?php echo WP_PLUGIN_URL; ?>/fantasticpopuptemplate/inc/reset.php', success: function(response) {

                //$('#fff').find('.form_result').html(response);
                $('#result1').css("display", "none");
                $('#resets1').css("display", "block");
                $('#resets1').html("Settings Resets");
                $('#resets1').fadeOut(2500, "linear");
            }});

        return false;
    }

</script>
<form onsubmit="return resetgeneral();" id="form_general_reset" class="form-1">
    <input type="submit" value="Reset" id="reset_general" name="reset" class="button-secondary"/>
    <input name="action" type="hidden" value="reset" />

</form>

您好,我正在尝试在Ajax中调用PHP重置函数,但是当我搜索时,我知道直接调用PHP函数是不可能的,所以我将特定的函数放在单独的PHP文件中,并调用该PHP文件。我不确定如何在Ajax中实现这一点,我尝试了上面的代码,但没有任何反应。设置重置消息出现。我该怎么办?任何帮助都将不胜感激。在使用Ajax之前,我尝试过在PHP中使用isset函数,但每次都会加载页面,因此我才转向Ajax。

1个回答

7
在WordPress插件中,通过依靠admin_ajax.php文件可以实现标准的AJAX方式。虽然文件名有些误导,但是可以通过将函数分配给AJAX操作,在前端也可以使用该文件。WordPress Codex上有一个很好的描述:

http://codex.wordpress.org/AJAX_in_Plugins

需要注意的一点是:你的AJAX处理函数必须始终以die()命令结束,以避免WordPress产生额外的“0”输出。


谢谢beerwin,我只使用了大约一周的ajax。我阅读了相应的链接。当我点击重置按钮时,我调用php函数来获取特定函数(在使用ajax之前,我使用isset函数)。我不确定如何在ajax中实现这一点,需要帮助。抱歉,我对相应的链接有点困惑。 - Vignesh Pichamani
你试过那个解决方案了吗? - beerwin
2
你实际上不能直接从 Ajax 调用中调用 PHP 函数。你可以做的是在 Ajax 中发送一个变量,并在 PHP 文件中监听该变量,如果变量值为 true,则调用该函数。 - Martin
是的,我使用了您的提交按钮概念。但是对于重置,我们没有传递任何值。上面我也发布了我所做的代码。我仍然对重置选项感到困惑。 - Vignesh Pichamani
1
通过ajax请求发送一些虚拟数据,并在您的PHP脚本中进行检查:$.ajax({type: 'POST', url: '<?php echo WP_PLUGIN_URL; ?>/fantasticpopuptemplate/inc/reset.php', data: {reset: true} success: function(response)... - beerwin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接