POST-запрос работает с AJAX, но не с fetch - PullRequest
0 голосов
/ 21 ноября 2018

Мне нужно позвонить, чтобы получить токен.Я хотел использовать fetch, но получаю ошибку 500.(JQuery AJAX запрос работал нормально, но я использую реагировать, и я хочу, чтобы избежать установки JQuery только для этого).В чем здесь разница?

AJAX (работает нормально, я получаю токен обратно)

  var settings = {
              "async": false,
              "crossDomain": true,
              "url": "https://api.com/oauth2/token",
              "method": "POST",
              "headers": {
                            "Accept": "application/json",
                            "Content-Type": "application/x-www-form-urlencoded",
                            "cache-control": "no-cache",
                            "Postman-Token": "postmantoken"
              },
              "data": {
                            "client_id": clientId,
                            "client_secret": clientSecret,
                            "grant_type": "password",
                            "username": username,
                            "password": password,
              }
            }
            $.ajax(settings).done(function (response) {
                            aTkn = response.access_token;
            });
            return aTkn;

Выборка: получаем ошибку 500: {error: "invalid_request", error_description: "Ссылка на объект не установлена ​​для экземпляраобъекта. "} error:" invalid_request "error_description:" Ссылка на объект не установлена ​​для экземпляра объекта. "

    fetch("https://api.com/oauth2/token", {
     crossDomain:true,
     method: 'post',
     headers: {  "Accept": "application/json",
                  "Content-Type": "application/x-www-form-urlencoded",
                  "cache-control": "no-cache",
                  "Postman-Token": postmantoken},
     body:{
       "client_id": clientId,
       "client_secret": clientSecreet,
       "grant_type": "password",
       "username": username,
       "password": password,
     }
    }).then((data)=>{debugger})

1 Ответ

0 голосов
/ 21 ноября 2018

Данные, которые вы передаете для извлечения, должны быть преобразованы в строку, в противном случае будет передано что-то вроде [object Object]:

fetch("https://api.com/oauth2/token", {
    crossDomain: true,
    method: 'post',
    headers: {
        "Accept": "application/json",
        "Content-Type": "application/x-www-form-urlencoded",
        "cache-control": "no-cache",
        "Postman-Token": postmantoken
    },
    body: JSON.stringify({
        "client_id": clientId,
        "client_secret": clientSecreet,
        "grant_type": "password",
        "username": username,
        "password": password,
    })
}).then((data) => { debugger })

Надеюсь, это поможет!

...