页面被刷新,因为您正在同步(传统)发送表单。要使用ajax发送表单,您的函数将连接到onclick
必须返回false
或致电.preventDefault()
提交事件时。
jQuery( "#my-form" ).submit(function( event ) {
event.preventDefault();
//
// your code...
});
// --- or ---
jQuery(\'#submit\').on(\'click\', function() {
// ....
return false;
});
编辑:将javascript代码移动到单独的文件中(例如。
myscript.js
). 使用在页面上包含该文件
wp_enqueue_scripts()
(
hook). 在您使用的代码中
ajaxurl
但你没有在任何地方定义它。
wp_localize_script()
用于将值从php传递到javascript,这样您可以在中设置ajax的地址
ajx_url
变量
页面模板。php:
<?php
echo "<form id=\'my-form\'>
Select Date Range:
<input type=\'date\' name=\'date1\'>
<input type=\'date\' name=\'date2\'>
<input type=\'submit\' id=\'submit\' value=\'submit\'>
</form>";
?>
myscript。js公司:
jQuery(\'#submit\').on(\'click\', function() {
let formData = jQuery(\'#my-form\').serializeArray(); // retrieves the form\'s data as an array
jQuery.ajax({
url: ajax_object.ajax_url, // default ajax url of wordpress
type: \'POST\',
data: {
action: \'lineChartCustom\', // use this action to handle the event
dataForPHP: formData // this is your form\'s data that is going to be submitted to PHP by the name of dataForPHP
}
}).done(function( msg ) {
alert( msg );
});
return false;
});
功能。php
add_action( \'wp_enqueue_scripts\', \'my_enqueue\' );
function my_enqueue() {
wp_enqueue_script( \'my-javascript\', get_stylesheet_directory_uri(). \'/myscript.js\', array(\'jquery\'), \'\', true );
// in JavaScript, object properties are accessed as ajax_object.ajax_url
wp_localize_script( \'my-javascript\', \'ajax_object\',
array( \'ajax_url\' => admin_url(\'admin-ajax.php\') ) );
}
add_action(\'wp_enqueue_scripts\',\'enqueue_parent_styles\');
add_action(\'wp_ajax_nopriv_lineChartCustom\', \'lineChartCustomCreate\');
add_action(\'wp_ajax_lineChartCustom\', \'lineChartCustomCreate\');
function lineChartCustomCreate(){
if ( isset( $_POST[\'dataForPHP\']) ){
//echo data array
print_r($_POST[\'dataForPHP\']);
}
die();
}