我正在尝试使用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?我做错了什么?
非常感谢您的回答。
答案 0 :(得分:1)
当JWT token格式错误或无效时,通常会出现此错误。请注意,您将在标题中传递
xhr.setRequestHeader("Authorization", "BEARER " + token);
请确保令牌有效,并且API能够接受该令牌。另外,请尝试将BEARER
更改为Bearer
。如果API在检查标头值时没有忽略大小写,则后者可能是原因。