Ajaxurl返回0

时间:2016-03-31 15:51:57

标签: javascript php ajax wordpress wordpress-plugin

我正在制作一个wordpress插件,允许管理员通过点击按钮

删除数据库中的特定行
<td>
    <img src="/DeleteRed.png" onclick="deleteRow(<?php echo $rowa->id?>)"><br>
</td>

最初我正在调用像这样的ajax

function deleteRow(val) {
    var url = "id="+val;
    alert (url);
    $.ajax( 
    {
        type:'GET',
        url:"../wp-content/plugins/salah-world/delete.php",
        data:url,
        success:function(data) {    
            console.log(data);
        }
     });
}

并使用此PHP代码

<?php
    $id=$_GET["id"];
    define('WP_USE_THEMES', false); 
    require_once( dirname(dirname(dirname(dirname(__FILE__)))) . '/wp-load.php');
    echo $id."ID";
    global $wpdb;

    $table_name = $wpdb->prefix . 'iqamahTimes';
    $wpdb->delete( $wpdb->prefix . 'iqamahTimes' , array( 'id' => $id ) );
?>

哪个工作正常,返回id以及从数据库中删除它。但是,当我提交我的插件Wordpress时,称调用wp-load.php是不是没有。我理解为什么。

然后我尝试使用ajaxurl并为ajax提出了这个

function deleteRow(val) {
        var url = val;
        alert (url);
        $.ajax(
        {
            url:ajaxurl,
            data: {
                'action':'exampleajaxrequest',
                'id'    : url
            },
            success:function(data)
            {    
                console.log(data);
                    //location.reload(true);
            }
        });

}

并且php如下

function exampleajaxrequest() {
    $id = $_REQUEST['id'];
    echo($id."id");
    global $wpdb;
    $table_name = $wpdb->prefix . 'iqamahTimes';
    $wpdb->delete( $wpdb->prefix . 'iqamahTimes' , array( 'id' => '5' ) );
    die();
}

我已将add_action置于构造方法下,如下所示

public function __construct(){
    add_action( 'wp_ajax_exampleajaxrequest', 'exampleajaxrequest' );
    add_action( 'wp_ajax_nopriv_exampleajaxrequest', 'exampleajaxrequest' );

    add_action("admin_menu", array($this,"add_plugin_menu_fnbar"));
    add_action("admin_init", array($this,"register_dasettings"));

    add_action('admin_enqueue_scripts', array($this, 'register_admin_scripts'));
}

然而,当我运行它时,我收到此错误
警告:call_user_func_array()期望参数1是有效的回调,函数&#39; exampleajaxrequest&#39; /home/he/public_html/sd.org/wp/wp-includes/plugin.php 525 行中未找到或无效的功能名称
0

当我将add_Action方法放在其他地方时,我只得到0并且该行没有任何反应。

注意:这是一个后端脚本。

1 个答案:

答案 0 :(得分:1)

我在这里推测但是函数exampleajaxrequest实际上是插件类中的一个方法?

如果是这样,你需要像这样排队:

add_action( 'wp_ajax_exampleajaxrequest', array($this,'exampleajaxrequest') );
add_action( 'wp_ajax_nopriv_exampleajaxrequest', array($this,'exampleajaxrequest') );