Products
GG网络技术分享 2025-03-18 16:12 1
I am developing a WordPress plugin and I am trying to pass a variable from ajax to a php file. Both files are inside my plugin folder. The js file is running but when I fire the ajax function, it seems that is not sending a post.
Plugin structure:
-plugin folder
--ajax.js
--folder/example.php
This is my ajax.js
// using jQuery ajax// send the text with PHP
$.ajax({
type: \"POST\",
url: \"/absoluteurlpluginfolder/folder/example.php\",
data: {
\'action\': \'my_action\',
\'whatever\': 1234
},
// dataType: \"text\",
success: function(data){
console.log(\'Connection success.\');
// console.log(data);
}
});
And this is my example.php
add_action( \'wp_ajax_my_action\', \'my_action\' );function my_action() {
global $wpdb; // this is how you get access to the database
$whatever = intval( $_POST[\'whatever\'] );
$whatever += 10;
alert($whatever);
wp_die(); // this is required to terminate immediately and return a proper response
}
I have two problems:
图片转代码服务由CSDN问答提供
感谢您的意见,我们尽快改进~
功能建议我正在开发一个WordPress插件,我试图将一个变量从ajax传递给一个php文件。 这两个文件都在我的插件文件夹中。 js文件正在运行,但是当我触发ajax函数时,似乎没有发送帖子。 </ p>
插件结构:</ strong> </ p>
-plugin文件夹</ p>
\\ n
- ajax.js </ p>
- folder / example.php </ p> </ li>
</ ul>
这是 我的ajax.js </ p>
//使用jQuery ajax //用PHP发送文本
$ .ajax({
type:“POST”,
url :“/ absoluteurlpluginfolder / folder / example.php”,
data:{
\'action\':\'my_action\',
\'whatever\':1234
},
// dataType:“text”,
success:function(data){
console.log(\'Connection success。\');
// console.log(data);
}
});
</ code> </ pre> \\ n
这是我的例子.php </ p>
add_action(\'wp_ajax_my_action\',\'my_action\'); function my_action(){
global $ WPDB; //这就是你如何访问数据库
$ whatever = intval($ _POST [\'whatever\']);
$无论+ = 10;
提醒($ whatever); \\ n
wp_die(); //这需要立即终止并返回正确的响应
}
</ code> </ pre>
我有两个问题:</ p>
\\ n - 我看不到example.php正在接收任何内容</ li>
- 我如何使用相对URL连接我的PHP文件? 当我尝试使用\'url:\'文件夹/ example.php“时,它似乎以” http:// localhost / my-wp-project / wp-admin / ”而不在我的插件文件夹中,并且失败。</ li>
</ ol>
</ div>
网友观点:
I think that the main problem was that I need to add \\\"wp_enqueue_script\\\" and \\\"wp_localize_script\\\". However, I am working in the development of a TinyMCE plugin inside WordPress.
That means that although the JS file is already include, it is not working when I add \\\"wp_enqueue_script\\\" and \\\"wp_localize_script\\\". Why? I do not know but the strange thing is that I made it working with another line.
wp_register_script( \'linked-plugin-script\', null);
I have tried with different versions, and the minimum necessary to work is this one above. I can put the URL, version, jquery dependency and false or true. All of them work.
So at the end this is my code and is working.
This is the plugin.php// Include the JS for TinyMCEfunction linked_tinymce_plugin( $plugin_array ) {
$plugin_array[\'linked\'] = plugins_url( \'/public/js/tinymce/plugins/linked/plugin.js\',__FILE__ );
return $plugin_array;
}
// Add the button key for address via JS
function linked_tinymce_button( $buttons ) {
array_push( $buttons, \'linked_button_key\' );
return $buttons;
}
// Enqueue the plugin to manage data via AJAX
add_action( \'admin_enqueue_scripts\', \'my_enqueue\' );
function my_enqueue() {
wp_register_script( \'linked-plugin-script\', null);
wp_enqueue_script( \'linked-plugin-script\');
// in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
wp_localize_script( \'linked-plugin-script\', \'ajax_object\', array(
\'ajax_url\' => admin_url( \'admin-ajax.php\' ),
\'whatever\' => \'\' )
);
}
// Same handler function...
add_action( \'wp_ajax_my_action\', \'my_action\' );
function my_action() {
global $wpdb;
$whatever = strtoupper($_POST[\'whatever\']);
echo $whatever;
wp_die();
}
And this is the plugin of TinyMCE in JavaScript
// JavaScript file for TinyMCE Linked Plugin//
//
//
( function() {
tinymce.PluginManager.add( \'linked\', function( editor, url ) {
// Add a button that opens a window
editor.addButton( \'linked_button_key\', {
// Button name and icon
text: \'Semantic Notation\',
icon: false,
// Button fnctionality
onclick: function() {
// get raw text to variable content
var content = tinymce.activeEditor.getContent({format: \'text\'});
// using jQuery ajax
// send the text to textrazor API with PHP
$.ajax({
type: \'POST\',
url: ajax_object.ajax_url,
data: { \'action\': \'my_action\',
\'whatever\': ajax_object.whatever = content
},
beforeSend: function() {
console.log(\'before send..\');
},
success: function(response){
console.log(\'Success the result is \'+response);
}
});
} // onclick function
} ); // TinyMCE button
} ); // tinymce.PluginManager
} )(); // function
###
Have you seen this page? This is the best tutorial. But you have missed a few things:
You should set global js variable with wp_localize_script()
function. Like
wp_localize_script( \'ajax-script\', \'ajax_object\', array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ), \'we_value\' => 1234 ) );
Replace your url in JS to ajax_object.ajax_url
.
IF you wanna work ajax with wp_ajax
hooks - you should send all your requests do wp-admin/admin-ajax.php
. You can get this url by admin_url(\'admin-ajax.php\');
.
Demand feedback