发帖请求未通过?

时间:2019-04-12 作者:TTT

我仍在尝试清楚地了解API的某些方面。

我有一条定制路线

add_action( \'rest_api_init\', function () {
  register_rest_route(\'my-project/v1/\', \'/form/post/\', array(
    \'methods\' => \'POST\',
    \'callback\' => \'post_form\',
  ) );
})
我有一个类似的GET,它可以完美地工作:

add_action( \'rest_api_init\', function () {
  register_rest_route(\'my-project/v1/\', \'/form/get/\', array(
    \'methods\' => \'GET\',
    \'callback\' => \'get_form\',
  ) );
})
返回纯文本+“null”的回调方法(使用var\\u dump,可以使用echo):

function post_form($data) {
    var_dump($data);
    return;
}
另一个问题的答案中建议的替代回调测试方法):

function post_form($data) {
    $data = [ \'foo\' => \'bar\' ];
    $response = new WP_REST_Response($data, 200);
    $response->set_headers([ \'Cache-Control\' => \'must-revalidate, no-cache, no-store, private\' ]);
    return $response;
}
jQuery调用:

$(".my-project-form-submit").click(function(){
   var serializedForm = $(\'#my-project-form\').serialize();
    $.post("/wp-json/my-project/v1/form/post/", serializedForm, function(data) {
        alert(data);
    });
});
序列化工作正常,$.post 然后什么都不会永远发生alert 永远达不到线。

关于这个帖子,我做错了什么?

这(我认为)不是一个404未找到的案例,我有过,但我认为现在已经纠正了。Chrome控制台中没有JavaScript错误。

1 个回复
SO网友:TTT

我发现它不起作用,因为两个端点使用相同的路由。我原以为定义一个用于POST,一个用于GET会导致不同的回调,但它们显然是相互冲突的。

第一次,我只需更改帖子的名称空间就可以完成请求。

也许有一种方法可以在同一个名称空间中定义不同的回调,我需要检查一下。

(现在,我有另一个问题,那就是$数据输入是空的,但我需要检查一些东西,也许还需要提出另一个问题。)