我已经构建了一个插件,我需要在管理中使用ajax,并遵循以下文档:https://codex.wordpress.org/AJAX_in_Plugins
然而,这已经过时了,我找不到任何好的例子来让它工作。
我为插件使用了一个类,并将jquery放在一个单独的文件中。显然我需要使用wp_localize_script 传递变量。这就是我努力理解如何从selectObject传递变量的地方。将JQuery中的值转换为PHP函数。
有人能帮忙吗?
myplugin-admin.js
function getFeatureIDs(selectObject){
var value = selectObject.value;
console.log(value); //I want to pass this value but it doesnt work
console.log(ajax_object.we_value);
var data = {
\'action\': \'get_etim\',
\'whatever\': ajax_object.we_value
};
jQuery.post(ajax_object.ajax_url, data, function(response) {
alert(\'Got this from the server: \' + response);
});
}
class-myplugin-admin.php
class myplugin_Admin {
private $myplugin;
private $version;
public function __construct($myplugin,$version ) {
add_action( \'wp_ajax_get_etim\', array( $this, \'get_etim\' ) );
}
public function enqueue_scripts() {
wp_enqueue_script( $this->myplugin, plugin_dir_url( __FILE__ ) . \'js/myplugin-admin.js\', array( \'jquery\' ), $this->version, false );
wp_localize_script( $this->myplugin, \'ajax_object\', array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ), \'we_value\' => 1234 ) );
}
public function get_etim() {
echo $_POST[\'whatever\'];
wp_die();
}
}
Results in console:
EC003025
1234
https://mytestsite.plesk.page/wp-admin/admin-ajax.php
警报为,
"E;从服务器获取:1234“;
这需要是select变量。
最合适的回答,由SO网友:Ben HartLenn 整理而成
你把你的value
在通过ajax发送到php函数的数据中创建的JS变量,如:
var data = {
\'action\': \'get_etim\',
\'whatever\': ajax_object.we_value,
\'select_value\': value
};
然后在Ajax发送给您的php函数中,您可以使用
select_value
和你以前一样
whatever
在您的代码中,例如:
echo “Whatever is: “ . $_POST[‘whatever’] . “, and Select value is: “ . $_POST[‘select_value’];
不要忘记使用nonce、清理输入数据和转义输出。