我在查看youtube ReactJS基于PHP令牌的Restful API用户身份验证时遇到了获取用户数据的问题,我按照他的教程进行操作,但出现此错误。
在我的控制台中,我收到此错误。
未捕获(承诺)SyntaxError:意外令牌<位于JSON中的位置0
我创建了UserData.js并将此UserData.js导入到我的登录页面
从“ ./UserData”导入{UserData};
export function UserData(type, users_data) {
let BaseUrl = 'http://localhost:8000/api/login_restful/';
return new Promise((resolve, reject) => {
fetch(BaseUrl+type, {
method: 'post',
body: JSON.stringify(users_data),
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
'Content-Type': 'application/json',
'Accept': 'application/json'
}
})
.then(function (response){
return response.json();
})
.then((res) => {
resolve(res)
})
.catch((error) => {
reject(error);
});
})
}
这是我的按钮句柄提交:
handleSubmit(e) {
e.preventDefault();
UserData('login',this.state).then(response => {
let result = response;
console.log(result);
})
}
在我的网络中:
答案 0 :(得分:0)
错误消息的措词与您运行JSON.parse('<...')时从Google Chrome浏览器获得的内容相对应。我相信响应主体实际上是HTML。
“ SyntaxError:JSON中位置0的意外令牌<”
我建议您添加到日志记录中。
fetch(BaseUrl+type, {
method: 'post',
body: JSON.stringify(users_data),
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
'Content-Type': 'application/json',
'Accept': 'application/json'
}
})
.then(function (response){
console.log('res', response);
return response.json();
})
.then((res) => {
resolve(res)
})
.catch((error) => {
reject(error);
});
查看实际的xhr(XMLHttpRequest)属性以了解有关响应的更多信息。尝试添加console.warn(xhr.responseText),您很可能会看到正在接收的HTML。