使用wp-ajax的WordPress API调用返回错误400

时间:2020-05-20 作者:ionitalex

我对使用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。为什么会这样?

2 个回复
最合适的回答,由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)

            },

SO网友:shanebp

您的ajax url不正确。

尝试更改:

var ajaxscript = { ajax_url : \'mywebsite.com/wp-admin/admin-ajax.php\' }
收件人:

var ajax_url = "<?php echo admin_url(\'admin-ajax.php\'); ?>";
和更改:url: ajaxscript.ajax_url,url: ajax_url,

但正确的方法是使用wp_localize_script

相关推荐

创建自定义API终结点以更改自定义标题图像

我的目标是创建一个自定义API端点,通过API调用可以将Wordpress中的自定义头映像更改为另一个映像(该映像将在API调用中传递,或者可能只是切换到Wordpress中的另一个媒体文件或类似文件)。UPDATE: 我现在找到了set\\u theme\\u mod()函数,这似乎是我正在寻找的,但当我尝试实现它时,我无法让它正常工作。API调用似乎设置正确,因为当我调用它时,当前标题图像会显示出来。问题是新图像没有设置。提前非常感谢。function cs_set_logo() {