我在wordpress的网站上有一个外部web应用程序。我试图从这个外部web应用程序中调用AJAX,从我的wordpress站点/数据库中获取一些信息,但我收到了一条错误消息400。
以下是我的ajax调用代码:
jQuery.ajax({
type:"POST",
url: "https://www.groupio.fr/wp-admin/admin-ajax.php",
contentType: \'json\',
dataType: "JSON",
responseType:\'json\',
data: {
action : "itempricingfunction",
ean : "EANTEST0101010"
},
success:function(data){
alert(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
这是我的功能。我的wordpress网站中的php文件:
function itempricingfunction(){
$product_ean = (isset($_POST[\'ean\'])) ? htmlentities($_POST[\'ean\']) : NULL;
echo json_encode(array(\'product_ean\' =>$product_ean));
exit;
}
add_action("wp_ajax_nopriv_itempricingfunction", "itempricingfunction");
add_action("wp_ajax_itempricingfunction", "itempricingfunction");
wordpress的响应是错误404。
你能帮我从我的网站上交流和设置/获取一些数据吗?
提前谢谢你。
SO网友:Jacob Peattie
您不应该以JSON的形式发送数据:
dataType: "JSON"
用于
add_action("wp_ajax_nopriv_itempricingfunction"
要工作,WordPress需要找到
action
您在此处正确设置的请求中的参数:
data: {
action : "itempricingfunction",
ean : "EANTEST0101010"
},
问题是它使用
$_REQUEST[\'action\']
, 但是PHP不填充
$_REQUEST
使用JSON。它仅适用于表单数据。因此,请删除
dataType
你应该会没事的:
jQuery.ajax(
{
type: \'POST\',
url: \'https://www.groupio.fr/wp-admin/admin-ajax.php\',
responseType: \'json\',
data: {
action: \'itempricingfunction\',
ean: \'EANTEST0101010\'
},
success: function( data ) {
alert( data );
},
error: function( errorThrown ) {
console.log( errorThrown );
}
}
);
还有几件事需要考虑:
如果web应用位于不同的域上,您可能会遇到CORS 问题
Acustom REST API endpoint 更适合这种情况,并且支持以JSON的形式接收数据