我对使用Wordpress进行api调用很陌生,所以请耐心等待。
我有这个功能:
function foo() {
$userinfo = [
"number" => "26246426",
"secondnumber" => "43634643"
];
$api_url = \'https://api.url.com\';
$response = wp_remote_post( $api_url, array(
// Set the Content-Type header.
\'headers\' => array(
\'Content-Type\' => \'application/json\',
),
// Set the request payload/body.
\'body\' => json_encode( $userinfo ),
) );
$res_body = wp_remote_retrieve_body( $response );
echo $res_body;
die();
}
这很有效,我得到了回应。
现在,我要做的是向我的ajax发送一个动作中的响应,该响应位于php函数正下方的脚本中(一切都发生在插件文件中)
以下是我的行动
add_action(\'wp_ajax_add_foo\', \'foo\' );
add_action(\'wp_ajax_nopriv_add_foo\', \'foo\' );
我的ajax调用在函数下面的脚本标记中
var ajaxscript = { ajax_url : \'mywebsite.com/wp-admin/admin-ajax.php\' }
jQuery(document).ready(function($) {
$.ajax ({
url: ajaxscript.ajax_url,
type: \'POST\',
// dataType: \'application/json\',
data: {
// the value of data.action is the part AFTER \'wp_ajax_\' in
// the add_action (\'wp_ajax_xxx\', \'yyy\') in the PHP above
action: \'_add_foo\'
// ANY other properties of data are passed to your_function()
// in the PHP global $_REQUEST (or $_POST in this case)
},
success : function( response ){ console.log(response) },
error : function(error){ console.log(error) }
}) ;
});
我希望能得到$res\\u body变量,但我得到的是400。为什么会这样?
最合适的回答,由SO网友:ionitalex 整理而成
我睡了一夜才发现这一点。有时我们的大脑就是这样工作的。
问题其实是我打电话过来的,应该是“add\\u foo”而不是“add\\u foo”
data: {
// the value of data.action is the part AFTER \'wp_ajax_\' in
// the add_action (\'wp_ajax_xxx\', \'yyy\') in the PHP above
action: \'_add_foo\'
// ANY other properties of data are passed to your_function()
// in the PHP global $_REQUEST (or $_POST in this case)
},