簡體   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