[英]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
中的ajaxurl
和action
中的回調函數名稱。
$.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.