我发现了一个使用Ajax和本机Javascript的解决方案,如下所示:
// Filename send2server.js
const sendToServer = function() {
/* Prepare the object to be sent: ********************************************************************/
var params = new FormData();
params.append(\'action\', \'update_sql\'); // update_sql is implemented in PHP (see below)
params.append(\'quoteAtt\', props.attributes.quoteAtt); // The actual data
/* Create the Ajax connection object: ****************************************************************/
var request = new XMLHttpRequest();
request.open(\'POST\', ajax_object.ajax_url, true); // ajax_object.ajax_url defined in PHP (below)
request.send(params); // Send request to server
}
在服务器端,以下函数以以下方式接收请求:
// File plugin.php
function load_ajax_script() {
wp_enqueue_script(
\'send2server\',
plugins_url( \'send2server.js\', __FILE__ ),
array(),
filemtime( plugin_dir_path( __FILE__ ) . \'send2server.js\' )
);
wp_localize_script( // make ajaxurl available to Javascript
\'send2server\',
\'ajax_object\',
array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) )
);
}
add_action(\'init\', \'load_ajax_script\');
function update_sql() { // Invoked by request.send()
$received = $_POST["quoteAtt"]; // Contents of quoteAtt
// ...
}
add_action(\'wp_ajax_update_sql\', \'update_sql\'); // \'update_sql\' matches the \'action\' in params
这是最好的解决方案吗?我不知道,但它起作用了。