Wordpress jQuery向数据库发送值

时间:2016-03-08 22:02:33

标签: javascript php jquery ajax wordpress

单击按钮时,我正在尝试将值发送到我的wordpress数据库(wp_usermeta表)。

这是我目前所知的,我知道我需要使用AJAX发布值,我也知道wordpress有一个更新wp_usermeta表的函数,即:

update_user_meta( $user_id, 'dashboard_onboarding_status', 'myValue' );

好消息是myValue不是变量 - 我只想将“完整”这个词发送给数据库。它也是一个管理员端脚本 - 我不确定这是否会对如何调用ajax url产生影响。

以下是我的代码:

在我的主js文件中,我有以下AJAX脚本:

$('.skizzar_onabording_dashboard #next.step5').click(ajaxSubmit);

    function ajaxSubmit(){
        jQuery.ajax({
            type:"POST",
            url: "/wp-admin/admin-ajax.php",
            data: {
                "value" : "completed"
            },
            success:function(data){
                console.log(data);
            }
        });

        return false;
    }

因此,当用户点击应该触发AJAX功能的.skizzar_onabording_dashboard #next.step5时。

然后在我的主插件php文件中,我有以下内容:

function myFunction(){
    global $wpdb;
    $user_id = get_current_user_id();

    $completed = $_POST['value'];
    update_user_meta( $user_id, 'onboarding_status', $completed );
    die();
}
add_action('wp_ajax_myFunction', 'myFunction');

我认为不用说这不起作用,但我对使用AJAX很新,我不明白为什么。看起来它应该很简单 - 基本上我只想按一个按钮并将“completed”添加到usermeta表中的“onboarding_status”键。

2 个答案:

答案 0 :(得分:2)

几乎所有你需要的都是here

首先,您需要localize admin-ajax.php,因为url: "/wp-admin/admin-ajax.php"称之为wp_localize_script( 'some_handle', 'ajax_post_to_db', array( 'ajaxurl' => admin_url( 'admin-ajax.php'), )); 不是一个好习惯。

add_action( 'wp_ajax_my_action', 'my_action_callback' );

function my_action_callback() {
    global $wpdb;
    $user_id = get_current_user_id();

    $completed = $_POST['value'];
    update_user_meta( $user_id, 'onboarding_status', $completed );
    die();
}

然后你的ajax脚本调用:

$('.skizzar_onabording_dashboard #next.step5').on('click', function(){
    ajaxSubmit();
});

function ajaxSubmit(){
    jQuery.ajax({
        type:'POST',
        dataType: 'html',
        url: ajax_post_to_db.ajaxurl,
        data: {
            action: 'my_action_callback'
        },
        success: function(data){
            console.log(data);
        },
        error : function (jqXHR, textStatus, errorThrown) {
            console.log(jqXHR + ' :: ' + textStatus + ' :: ' + errorThrown);
        },
    });

    return false;
}

最后是js文件中的ajax

data: {
    action: 'my_action_callback'
},

这应该是它。

<强>声明

我从不100%确定是否

data: {
    'action': 'my_action_callback'
},

admin-ajax.php

但是试一试,看看哪一个会给你你的函数回调。我很确定它应该是第一个。

您还可以在检查器中检查ajax调用的返回。只需转到“网络”标签并选择XHR,您就会看到public double getResult() { double log_length, log_diameter, length, diameter, result; log_length = Integer.parseInt(getLength().toString()); log_diameter = Integer.parseInt(getDiameter().toString()); length = log_length / 100; diameter = log_diameter * log_diameter * 3.14159265; result = length * diameter / 40000; return result; } public Cursor getPrice() { Cursor cursor = db.query("Price", new String[]{"price_stump_kn", "price_stump_eur", "road_price_kn", "road_price_eur"}, "sort = ? AND grade = ? AND length = ? BETWEEN diameter_dg = ? AND diameter_gg = ?", new String[]{getSort_id(), getGrade(), getLength(), getDiameter(), getDiameter()}, null, null, null); if (cursor.moveToFirst()) { do { Price price = new Price(); price.setStumpPrice_kn(cursor.getString(0)); price.setStumpPrice_eur(cursor.getString(1)); price.setRoadPrice_kn(cursor.getString(2)); price.setRoadPrice_eur(cursor.getString(3)); } while (cursor.moveToNext()); } return cursor; } ,当您点击它时,您可以看到它发送的所有相关数据(标题,响应等)。

答案 1 :(得分:0)

添加你的ajax函数作为动作

 function ajaxSubmit(){
   var data = {
       'action': 'myFunction',
       'value' : 'completed'
    };
    jQuery.post("/wp-admin/admin-ajax.php", data, function(response) {
        console.log(response);
    });
}