AJAX请求:段数不够或太多

时间:2017-06-05 07:29:15

标签: javascript jquery json ajax

我正在尝试使用AJAX执行POST请求,但是我收到以下错误:

Error: Not enough or too many segments

我有这个函数发送AJAX请求:

function sendAjaxRequest(type, url, params, callback, returnType = 'json') {

    var token = token_admin;

    var request = $.ajax({
        url: url,
        method: type,
        data: params,
        beforeSend: function(xhr) {
            /* Authorization header */
            xhr.setRequestHeader("Authorization", "BEARER " + token);
            // xhr.setRequestHeader("X-Mobile", "false");
        },
        dataType: returnType,
        contentType: 'application/json'
    });
    request.done(function(res) {
        callback(res);
    });
    request.fail(function(jqXHR, textStatus) {
        console.error(jqXHR);
        callback({ err: true, message: "Request failed: " + textStatus });
    });

}

我正在使用它:

var hostAPI = 'server_url';
var token_admin = 'some_token';

var params = {
    "criteria": {
        "lang.es_es.verb.parent": "abandonar"
    }
}

sendAjaxRequest("POST", hostAPI + 'words/getByCriteria', JSON.stringify(params), function(response) {
        console.log("------------");
        console.log(response);
        console.log("------------");
});

但它总是把这个错误归还给我,最奇怪的是我在Insomnia中测试了这个web服务:

{
    "criteria": {
            "lang.es_es.verb.parent": "abandonar"
    }
}

它会正确返回所有数据。我是AJAX的新手,我不知道这里发生了什么,为什么它在Insomnia工作而不是Javascript AJAX?我做错了什么?

非常感谢您的回答。

1 个答案:

答案 0 :(得分:1)

JWT token格式错误或无效时,通常会出现此错误。请注意,您将在标题中传递

xhr.setRequestHeader("Authorization", "BEARER " + token);

请确保令牌有效,并且API能够接受该令牌。另外,请尝试将BEARER更改为Bearer。如果API在检查标头值时没有忽略大小写,则后者可能是原因。