php400报错,Wordpress admin-ajax.php 400错误请求 - WordPress - srcmini

本文描述了一个在WordPress中遇到admin-ajax.php返回400错误的情况。当发起AJAX请求时,问题在于请求的action参数与PHP回调函数不匹配,以及缺少正确的Content-Type头。解决方案包括使用完整的URL,修正action参数,并确保jQuery设置正确的Content-Type头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个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)

在我的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还要附加该标头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值