我有一个wordpress admin-ajax.php文件的奇怪而令人沮丧的行为, 当我发出ajax请求时, 它返回了400错误的错误请求。
(function( $ ) {
var ajaxscript = { ajax_url : 'mydomain.com/wp-admin/admin-ajax.php' }
$.ajax({
url : ajaxscript.ajax_url, data : {
action : 'cart_clb', id : 1
}, method : 'POST', success : function( response ){ console.log(response) }, error : function(error){ console.log(error) }
})
})(jQuery)
【WordPress admin-ajax.php 400错误请求】在我的functions.php中
add_action( 'wp_ajax_post_cart_clb', 'cart_clb' );
add_action( 'wp_ajax_nopriv_post_cart_clb', 'cart_clb' );
function cart_clb(){
echo json_encode($_POST);
die();
}
如上所述, 当我执行请求时:
mydomain.com/wp-admin/admin-ajax.php 400 (Bad Request)
{readyState: 4, getResponseHeader: ?, getAllResponseHeaders: ?, setRequestHeader: ?, overrideMimeType: ?,
…}
有人可以帮我取悦吗?谢谢。
#1首先, 使用带有协议(或至少与协议无关的形式)的完整和绝对URL:
var ajaxscript = { ajax_url : '//mydomain.com/wp-admin/admin-ajax.php' }
其次, 你的ajax操作名称不是php回调函数名称, 而是钩子wp_ajax_ {action_name} / wp_ajax_nopriv_ {action_name}的动态部分, 因此在你的情况下应为:
data : {
action : 'post_cart_clb', id : 1
},
#2我已经修改了你的代码, 然后看一下:
(function( $ ) {
var ajaxscript = { ajax_url : 'mydomain.com/wp-admin/admin-ajax.php' }
$.ajax({
url : ajaxscript.ajax_url, data : {
action : 'post_cart_clb', id : 1
}, method : 'POST', //Post method
success : function( response ){ console.log(response) }, error : function(error){ console.log(error) }
})
})(jQuery)
这是WordPress ajax的语法:wp_ajax_ {Your_action_name} wp_ajax_nopriv_ {Your_action_name}
#3在Vanilla JavaScript中, 如果不将此标头附加到POST请求中, 则会收到错误请求:
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;
');
因此, 请确保jQuery还要附加该标头。
推荐阅读
- WordPress作为决策树
- 登录时,WordPress管理栏未显示在前端
- WORDPRESS(add_theme_support(‘post-thumbnails’);不起作用())
- WordPress(添加主页(=最新帖子页面)以正确导航)
- WordPress(添加主题支持)
- WordPress-将特色图片添加到自定义帖子类型
- WordPress add_image_size会导致非常糟糕的质量
- WordPress(根据显示的页面向正文添加动态类)
- WordPress 5.4主题编辑器只能在LOCAHOST上运行,而不能在LIVE主题编辑器站点上运行