我以前从未在wordpress中使用过ajax,我正试图通过在youtube上观看一些视频教程来发出一个简单的ajax请求,但它总是返回以下错误消息:加载资源失败:服务器响应状态为400(错误请求)
我的javascript(在我自己的模板文件中):
jQuery.ajax({
url: ajaxurl,
type: "POST",
dataType: \'json\',
data: {
action: \'my_action\'
},
success: function ( response ) {
console.log("success");
alert("success");
},
error: function( error ){
console.log("error");
alert("error");
}
});
我的职能。php文件:
<?php
add_action(\'wp_ajax_my_action\', \'insertEmail\');
add_action(\'wp_ajax_nopriv_my_action\', \'insertEmail\');
function insertEmail(){
echo "<script> alert(\'functions fil\'); </script>"
die();
}
?>
SO网友:David Sword
下面是我在Wordpress中用于AJAX提交的一个基本片段,它可能会帮助您:
<?php
if (isset($_POST[\'my_theme_ajax_submit\']))
if ( wp_verify_nonce( $_POST[\'nonce\'], \'my_theme_ajax_submit\' ) )
my_theme_ajax_submit();
function my_theme_ajax_submit() {
// do something
// some php code that fires from AJAX click of #fire
wp_mail( \'[email protected]\', \'my_theme_ajax_submit() fired\', time());
wp_die();
}
?>
<button id=\'fire\'>Fire Something</button>
<script>
jQuery(\'#fire\').click(function(){
jQuery.ajax({
type: \'post\',
data: {
"my_theme_ajax_submit": "now",
"nonce" : "<?php echo wp_create_nonce( \'my_theme_ajax_submit\' ); ?>"
},
success: function(response) {
jQuery(\'#fire\').text("Somthing Done!");
},
error: function(response) {
jQuery(\'#fire\').text("...error!");
},
});
});
</script>
这可以更好地构建-将脚本容纳在
wp_enque_script()
, 拥有
my_theme_ajax_submit()
状态检查/在早期弯钩处开火,如
init
(而不是在模板中),或使用适当的
wp_ajax_(action)
胡克斯(对我来说似乎从来都不管用)——但它应该会给人一个想法。