使用javascript从服务器获取字符串响应

时间:2018-01-04 15:48:32

标签: javascript

我有一个fetch()方法向Web Api 2服务器发出post请求。如果服务器认为POST数据有效,则返回包含字符串格式的登录令牌的字符串。问题是我无法获取我的fetch方法中返回的字符串,当我尝试应用response.json什么都没有时,并且在调度之前的console.log中,response.json未被识别。

这是我的获取代码:

export const login = (user) => (dispatch) => {
dispatch({ type: 'LOGIN_STARTED' });
return fetch(`${httpApiUrl}/api/userdata/verify`, {
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
    },
    body: JSON.stringify(user)
})
    .then((response) => {
        if (!response.ok) {
            Alert.alert('ERROR', 'User or password is incorrect');
            dispatch({ type: 'LOGIN_FAILED', data: 'User or password is incorrect' });
        }
        else return response;
    }).then((response) => response.json).then((response) => {
        dispatch({ type: 'LOGIN_SUCCEEDED', data: response.json });

    })
    .catch(error => {
        dispatch({ type: 'LOGIN_FAILED', data: error.message });
    });
};

这是我的服务器发布方法代码

[HttpPost]
[Route("verify")]
[ResponseType(typeof(string))]
[AllowAnonymous]
public HttpResponseMessage VerifyUser(HttpRequestMessage request, UserDataView data)
{
    return CreateHttpResponse(request, () =>
    {
        HttpResponseMessage response = null;
        if (service.wasUpdated(data)) //de fapt verifica daca e userul in baza de date
        {
            response = request.CreateResponse(HttpStatusCode.OK, JwtManager.GenerateToken(data.username));
        }
        else
            response = request.CreateResponse(HttpStatusCode.OK, false);
        return response;
    });
}

我检查了服务器上是否有函数返回字符串,并且确实将字符串添加到响应中。

我怎样才能进入     dispatch({type:' LOGIN_SUCCEEDED',data:response.json}); 数据中的方法我的字符串响应和response.json不再被识别?谢谢。

0 个答案:

没有答案