繁体   English   中英

Ajax 调用无法通过插件在 wordpress 中工作

[英]Ajax call not working in wordpress through a plugin

我有 2 个 Ajax 调用,第一个正在工作,但是当它将数据发送到其他文件send_data.php并且当我尝试运行任何 wordpress 函数时它不起作用!

这是第一个 ajax 调用,现在当我尝试运行像add_post_meta(2, 'dropbox', 'Senddataphp', false);这样的任何 wordpress 函数时发送到send_data.php文件的数据; 它打印出这个错误我想要做的很简单,只需将 ajax 中的数据插入 wp 数据库,但我不知道每次使用 js 时都会遇到这样的 php 问题

caught Error: Call to undefined function add_post_meta() in C:\xampp\htdocs\wordpress\wp-content\plugins\Dropboxapi\includes\send_data.php:17
        Stack trace:

第一个 Ajax 代码

$.ajax({
        
                type: "POST",
                url: 'wp-content/plugins/Dropboxapi/includes/send_data.php',
                data: {
                    req: JSON.stringify(dropbox_links)
                },
        
                cache: false,
                success: function(responseData) {
                    // consider using console.log for these kind of things.
                    console.log("Data recived: " + responseData);
                    console.log("First Ajax" + dropbox_links);
        
        
        
                }
            });

此处的第二个 Ajax 代码我尝试执行一个函数,该函数将发送的数据插入数据库,但它不起作用, dropbox.php文件是插件的主文件

$.ajax({
            type: "POST",
            url: 'wp-content/plugins/Dropboxapi/dropbox.php',

            data: {
                functionname: 'printdata2'
            },

            success: function(obj, textstatus) {
                if (!('error' in obj)) {
                    var yourVariable = obj.result;
                    console.log("SEc Ajax" + dropbox_links + yourVariable);

                } else {
                    console.log(obj.error);
                    console.log("SEc1 errr Ajax" + dropbox_links +
                        yourVariable);
                }
            },
            error: function(msg) {
                console.log(
                    " errrnot sure what to ask for here to check issue" +
                    msg);
            }
        });

在 WordPress 中使用 ajax 时,不会直接调用存储要运行的函数的文件。 而是调用了admin-ajax.php ,并在'action'中添加了回调函数。 首先创建一个函数并在其中添加您的add_meta_box ,然后添加 wp_ajax 操作挂钩,如下所示。 请记住,将由 ajax 请求调用的每个函数都必须以wp_die()结尾。

function printdata2() {
  add_post_meta(2, 'dropbox', 'Senddataphp',  false);
  wp_die();
}
add_action( 'wp_ajax_nopriv_printdata2', 'printdata2' );
add_action( 'wp_ajax_printdata2', 'printdata2' );

接下来使用wp_localize_script()admin_url('admin-ajax.php')传递给 javascript。

function load_script() {
  wp_enqueue_script( 'your-js', get_template_directory_uri() . '/js/your-js.js', array('jquery') );
  wp_localize_script( 'your-js', 'ajax_object', array('ajaxurl' => admin_url('admin-ajax.php')) );
}
add_action('wp_enqueue_scripts', 'load_script');

现在在您的 javascript 文件中调用url中的ajaxurlaction中的回调函数名称。

$.ajax({
  url: ajax_object.ajaxurl,
  data: {
    action: 'printdata2'
  },
  success: function(obj, textstatus) {
    // obj goes here...
  },
  error: function(msg) {
    console.log(msg);
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM