我正在写一个WordPress插件。我的插件有一些表单,可以将数据发布到WordPress仪表板中我的插件生成的其他页面。我正在尝试创建一个AJAX函数,该函数在提交表单时触发。我的AJAX工作得很好——为了测试它,我在单击插件头时触发了事件,它在那里工作得很好。但是,如果我试图在单击提交按钮(任何输入类型=“提交”)时触发事件,它将不起作用。JavaScript运行正常,但找不到要运行的PHP函数。
以下是我的JavaScript:
$(\'.button\').on(\'click\', function (e) {
var url = testingajax.ajaxurl;
var data = {
\'action\': \'testing_ajax_wtf\',
}
$.post(url, data, function (response) {
console.log(response);
});
});
PHP函数只返回一个字符串(用于测试目的)。
如果我将第一行更改为:
$(\'.my-plugin-header\').on(\'click\', function (e) {
但如果我试图在单击提交按钮或提交表单时触发它,JavaScript会运行,但找不到PHP函数。
知道这是怎么回事吗?当您在仪表板中提交表单时,WordPress是否会阻止您运行AJAX?
最合适的回答,由SO网友:Mohammad Mursaleen 整理而成
只需删除type="submit"
然后让jQuery ajax调用首先被触发。收到回复后,您也可以提交表格。像这样的东西;
function your_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
$(\'.button\').on(\'click\', function () {
var data = {
\'action\': \'your_action\'
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
// getting response from your ajax callback function
alert(\'Got this from the server: \' + response);
// submitting form after getting response
$(\'#your_form_id\').submit();
});
});
});
</script>
<?php
}
// Hook this function to admin footer
add_action( \'admin_footer\', \'your_action_javascript\' );