从不同的域发出AJAX请求

时间:2017-07-31 作者:dcp3450

我正在从主域向子域发出ajax请求。我已经解决了我的跨来源问题,所以我没有收到错误。呼叫正在返回data:0. 我已经检查了我的响应配置,ajax url和“操作”都是正确的。我的functions.php 如下所示:

add_action("wp_ajax_sendhire", "sendhire");
add_action("wp_ajax_nopriv_sendhire", "sendhire");

function sendhire() {

    $cars = array("Volvo", "BMW", "Toyota");
    return json_encode($cars);
    die();

}
显然,这些数据只是为了测试。

2 个回复
SO网友:Johansson

如果要使用Admin Ajax输出内容,应该使用echo 相反使用时没有可查看的内容return, 所以你会得到0.

《法典》的这段引文进一步解释了0 答复:

如果Ajax请求失败wp-admin/admin-ajax.php, 根据故障原因,响应将为-1或0。此外,如果请求成功,但Ajax操作与定义的WordPress挂钩不匹配add_action(\'wp_ajax_(action)\', ...)add_action(\'wp_ajax_nopriv_(action)\', ...), 然后admin-ajax.php 将响应0。

现在,如果要输出JSON响应,那么应该查看REST API。它的默认响应类型是JSON。

为此,请注册端点的路径,并创建回调函数:

add_action( \'rest_api_init\', function () {
    register_rest_route( \'dcp3450\', \'/test_endpoint/\', array(
            \'methods\' => \'GET\', 
            \'callback\' => \'sendhire\' 
    ) );
});

function sendhire() {

    $cars = array("Volvo", "BMW", "Toyota");
    return $cars;

}
现在通过访问http://example.com/wp-json/dcp3450/test_endpoint/ 您将得到JSON响应,您可以摆脱这个令人讨厌的0,它一直在追随人类。

SO网友:Shakeel Ahmad

WordPress为这项工作提供了一个非常有用的API(RESTAPI),您可以使用它,而不是发送ajax请求。这是文件请看一下https://developer.wordpress.org/rest-api/

结束

相关推荐

WP-AJAX VS WP REST API:从外部向网站请求使用什么?

我有关于WP的网站。此外,我在一个web服务中有一个帐户。我需要从这个web服务获得一个到我网站特定地址的请求。这是一个我想用自己的插件处理的webhook。外部对网站的请求使用什么,wp-ajax 或WP REST API? 我对处理这个请求的速度不感兴趣。我对安全方面的正确方式和普遍接受的做法感兴趣。