Javascript Can';t在rest上从管理员发送正确的JSON参数(reactJS)

Javascript Can';t在rest上从管理员发送正确的JSON参数(reactJS),javascript,ruby-on-rails,reactjs,http-headers,admin-on-rest,Javascript,Ruby On Rails,Reactjs,Http Headers,Admin On Rest,大家好,我关注这个,对于登录,我关注: 并在API端再次调试参数,结果: <ActionController::Parameters {"controller"=>"sessions", "action"=>"create"} permitted: false> <ActionController::Parameters {"{\"username\":\"jhon\",\"password\":\"dow\"}"=>nil, "controller"=&g

大家好,我关注这个,对于登录,我关注:

并在API端再次调试参数,结果:

<ActionController::Parameters {"controller"=>"sessions", "action"=>"create"} permitted: false>
<ActionController::Parameters {"{\"username\":\"jhon\",\"password\":\"dow\"}"=>nil, "controller"=>"sessions", "action"=>"create"} permitted: false>
nil,“控制器”=>“会话”,“操作”=>“创建”}允许:false>
那么,如何使获取参数成为:


ActionController::参数{“username”=>“jhon”、“password”=>“doe”、“controller”=>“sessions”、“action”=>“create”}允许:false>

默认情况下,浏览器采用表单数据如果要发送类似json的格式,则ypu必须在API获取方法中设置json属性true,请参见下文--


默认情况下,浏览器采用表单数据,如果您希望发送类似json的格式,那么ypu必须在API fetch方法中设置json属性true,请参见下文--


如果您希望json解释您的字符,那么应该添加
charset=utf-8
进行解析

const request = new Request('http://localhost:9000/login', {
            method: 'POST',
            body: JSON.stringify({ username, password }),
            headers: new Headers({ 'Content-Type': 'application/json; charset=utf-8',
                                   'Accept': 'application/json'   
            }),
})
并确保您正确保存了令牌。对于我来说,我没有像建议的那样使用
令牌
,我使用了名为
访问令牌
的响应头,因此我直接在响应中保存在本地存储上。也许这会影响代码的结果

return fetch(request)
        .then(response => {
            if (response.status < 200 || response.status >= 300) {
                throw new Error(response.statusText);
            }
            localStorage.setItem('access-token', response.headers.get('access-token'));
            return response.json();
        });
返回提取(请求)
。然后(响应=>{
如果(response.status<200 | | response.status>=300){
抛出新错误(response.statusText);
}
localStorage.setItem('access-token',response.headers.get('access-token');
返回response.json();
});

如果您希望json解释您的字符,您应该添加
charset=utf-8
进行解析

const request = new Request('http://localhost:9000/login', {
            method: 'POST',
            body: JSON.stringify({ username, password }),
            headers: new Headers({ 'Content-Type': 'application/json; charset=utf-8',
                                   'Accept': 'application/json'   
            }),
})
并确保您正确保存了令牌。对于我来说,我没有像建议的那样使用
令牌
,我使用了名为
访问令牌
的响应头,因此我直接在响应中保存在本地存储上。也许这会影响代码的结果

return fetch(request)
        .then(response => {
            if (response.status < 200 || response.status >= 300) {
                throw new Error(response.statusText);
            }
            localStorage.setItem('access-token', response.headers.get('access-token'));
            return response.json();
        });
返回提取(请求)
。然后(响应=>{
如果(response.status<200 | | response.status>=300){
抛出新错误(response.statusText);
}
localStorage.setItem('access-token',response.headers.get('access-token');
返回response.json();
});

Hi Mohammad谢谢,但仍然无法获取参数您面临访问允许来源问题请参阅允许rails上的cors后端我在内容类型t中遇到的问题应该很小,而不是大写--headers:{“content type”:“application/json;charset=UTF-8”,}Hi Mohammad谢谢,但仍然无法获取参数您面临访问允许来源问题请参阅rails后端上的允许cors我在内容类型t中遇到的问题应该很小,而不是大写--headers:{“content-type”:“application/json;charset=UTF-8”,}
return fetch(request)
        .then(response => {
            if (response.status < 200 || response.status >= 300) {
                throw new Error(response.statusText);
            }
            localStorage.setItem('access-token', response.headers.get('access-token'));
            return response.json();
        });