我试图从位于同一域的路由template <typename T>
class ListNode
{
private:
T data;
int priority;
ListNode* prev;
ListNode* next;
public:
ListNode() { prev = next = NULL; }
ListNode(T d, int pr, ListNode* p, ListNode* n) { data = d; priority = pr; prev = p; next = n; }
template <typename T>
friend class List;
};
template <typename T>
class List
{
private:
ListNode* list_head;
ListNode* list_tail;
public:
List() { list_head = list_tail = NULL; }
~List() { clear(); }
bool isEmpty() { return list_head == NULL; }
bool contains(T value);
void addToQueList(T value, int priority);
T head() { return list_head->data; }
T tail() { return list_tail->data; }
T removeHead();
T removeTail();
void clear();
};
template <typename T>
bool List<T>::contains(T value)
{
ListNode *temp = list_head;
while (temp != NULL && temp->data != value)
temp = temp->next;
return temp != NULL;
}
中的端点获取JSON数据但不知何故我总是收到错误:
/users
当我查看错误的位置时,我获取了索引页面的源代码(运行脚本的同一页面)。
这是路线(Hapi.js):
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
这是客户端代码:
allUsers: {
method: 'GET',
path: '/users',
options: AuthHelper.required,
handler: async (request, h) => {
let users = [];
let error = false;
await User.find({})
.lean().then(result => {
if (result && result.length) users = db.filterResult(result);
})
.catch(err => {
error = true;
console.log(err);
});
if (error) {
return { message: 'There is an error.' };
} else {
return { users: users };
}
}
}
当我直接在浏览器中访问URL时,我会得到结果。
答案 0 :(得分:0)
顺便说一句,您应该使用reply
接口方法,以便hapi自动将其转换为有效的JSON:
allUsers: {
method: 'GET',
path: '/users',
options: AuthHelper.required,
handler: async (request, h) => {
let users = [];
let error = false;
await User.find({})
.lean().then(result => {
if (result && result.length) users = db.filterResult(result);
})
.catch(err => {
error = true;
console.log(err);
});
if (error) {
return { message: 'There is an error.' };
} else {
reply( { users: users } );
}
}
}
答案 1 :(得分:0)
由于charlieftl,我意识到问题出在哪里。我打开了网络标签,然后按照要求进行操作 - 这是一个登录页面。没有凭请求发送的凭证(从代码中可以看出,路由受到保护)因此响应总是返回索引页面的源,因为我被重定向回来了。
我只需要将same-origin
属性添加到credentials
选项。
fetch('http://localhost:3000/users', { credentials: 'same-origin' }).then((response) => response.json()).then((json) => console.log(json));