来自jQuery AJAX的WP API删除请求

时间:2014-09-26 作者:Federico Vezzoli

我正在使用rest json API插件http://wp-api.org/ 创建一个小应用程序。

我试图用jquery ajax删除一个自定义的帖子条目,但缺少一些东西,下面是我的代码:

...
//make the request
        var dataArray = {};
        var urlRequest = WP_API_Settings.root+"/posts/"+postID;
        var typeRequest = \'DELETE\';

        //first set the standard stuff
        dataArray["action"] = "wp_api";
        dataArray["_wp_json_nonce"] =  WP_API_Settings.nonce;

        //make the post
        $.ajax(urlRequest,{
            url : urlRequest,
            type : typeRequest,
            data : dataArray,
            cache : false
        }).done(
....
我收到的错误是401 unhorized with“json\\u user\\u cannot\\u delete\\u post”。我认为在进行删除调用时,数据没有被解析,我应该如何进行身份验证?有什么线索吗?

谢谢

1 个回复
最合适的回答,由SO网友:lippoliv 整理而成

你得到了401,因为你的AJAX没有被授权删除帖子。如果每个人都能向你的WordPress发送这样的AJAX请求并删除你的所有内容,这将是一个大问题。

截至年月日the API, 您的JS代码必须修改为以下内容:

...
//make the request
    var dataArray = {};
    var urlRequest = WP_API_Settings.root+"/posts/"+postID;
    var typeRequest = \'DELETE\';

    //first set the standard stuff
    dataArray["action"] = "wp_api";
    //dataArray["_wp_json_nonce"] =  WP_API_Settings.nonce;

    //make the post
    $.ajax(urlRequest,{
        url : urlRequest,
        type : typeRequest,
        data : dataArray,
        cache : false,
        beforeSend: function (xhr) {
            xhr.setRequestHeader(\'X-WP-Nonce\', WP_API_Settings.nonce);

            if (beforeSend) {
                return beforeSend.apply(this, arguments);
            }
        }
    }).done(
....
因此,现在您的NONCE被设置在X-WP-NONCE头中,而不是作为数据中的变量。

但愿这样行得通,我没有测试过。

结束

相关推荐