【问题标题】:Ajax click function is not working in Wordpress functionsAjax 点击功能在 Wordpress 功能中不起作用
【发布时间】:2021-02-12 17:09:22
【问题描述】:

我将不胜感激。我正在尝试通过 wordpress 函数文件(所有代码在一个地方)创建一个保存书签插件。问题是我无法让 ajax、jquery 工作我不确定它的哪一部分不工作。你点击链接,它会调用ajax,然后是php,它将post_id、user_id保存到数据库中。

这是代码(functions.php):

echo '<a href="#bookmark" class="bookmark">Bookmark</a>';

add_action('admin_head', 'bookmark_add');

function bookmark_add() { ?>
<script type="text/javascript">
jQuery(document).ready(function($) {
    $(document).on('click', '.bookmark', function(){
    console.log('bookmark_save_TEST');
    var data = {
        'action': 'bookmark_save',
        'user_id': 1234,
        'post_id': 3049291
    };
    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    jQuery.post(bookmark_save.ajax_url, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});
</script> <?php
}

add_action( 'wp_ajax_bookmark_save', 'bookmark_save_callback' );

 function bookmark_save_callback() {
 global $wpdb;
 $user_id = intval( $_POST['user_id'] );
 $post_id = intval( $_POST['post_id'] );

 $post_id += 10;

 echo $post_id;
 
// once the code above works, will uncomment this to add into the database.
 //$sql = $wpdb->query("INSERT INTO {$wpdb->prefix}wp_bookmarks(`user_id`,`post_id`) VALUES (%s, %d)", $user_id, $post_id);

exit();
}

谁能告诉我是什么一直出错?

【问题讨论】:

  • 检查浏览器控制台是否有任何错误。
  • 您还必须提供 ajax_url
  • @vanurag 我在浏览器控制台中根本没有收到任何错误,这就是它让它变得更加困难的原因。如何提供 ajax_url?另外,如果我使用 ajaxurl 会更好吗?所有代码都在一个文件中。

标签: javascript php jquery ajax wordpress


【解决方案1】:

如果您在管理区域使用,请使用“add_action('admin_footer', 'bookmark_add');” 对于前端“add_action('wp_footer', 'bookmark_add');”

还要检查您的操作。

'action': 'bookmark_save_callback',
add_action( 'wp_ajax_bookmark_save_callback', 'bookmark_save_callback' );
add_action( 'wp_ajax_nopriv_bookmark_save_callback', 'bookmark_save_callback' );

您可以查看更多信息https://codex.wordpress.org/AJAX_in_Plugins

【讨论】:

    【解决方案2】:

    你错过了右括号和 ajaxurl

    });
    </script>
    
     var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
    jQuery.post(ajaxurl, data, function(response) {
            alert('Got this from the server: ' + response);
        });
    

    也使用“wp_ajax_nopriv_”

    add_action( 'wp_ajax_nopriv_bookmark_save', 'bookmark_save' );
    

    【讨论】:

    • 感谢您的指出。我已经进行了更改并再次尝试,但仍然没有。没有结果、错误或控制台,什么都没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2017-11-14
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多