[英]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.