Как декодировать переменную Base64 в beforesend Ajax - PullRequest
0 голосов
/ 13 февраля 2020

Можно ли вообще передать переменную, закодированную в Base64, функции beforeSend в вызове Ajax, декодировать указанную переменную и затем передать эту декодированную переменную в данные? Мой код ниже не передает новое закодированное значение в данные.

const tokenData = {
    "ClientId": "<?php echo $api_clientId; ?>",
    "ClientSecret": "<?php echo $api_clientSecret; ?>",
    "MemberId": "<?php echo $api_memberId; ?>"
};

var encoded = btoa(JSON.stringify(tokenData));
console.log(encoded);
var decoded = JSON.parse(atob(encoded));
console.log(decoded);

var settings = {
    "async": true,
    "crossDomain": true,
    "url": Url,
    "beforeSend": function() {
        encoded = JSON.parse(atob(encoded));
    },
    "method": "POST",
    "headers": {
        "Content-Type": "application/json"
    },
    "data": encoded
}
console.log(settings);

1 Ответ

1 голос
/ 13 февраля 2020

beforeSend получает объект settings в качестве второго аргумента, вы можете использовать его для обновления опции data.

var settings = {
    "async": true,
    "crossDomain": true,
    "url": Url,
    "beforeSend": function(jqXHR, settings) {
        settings.data = atob(encoded);
    },
    "method": "POST",
    "headers": {
        "Content-Type": "application/json"
    }
}

Я удалил JSON.parse(). Поскольку вы отправляете application/json, это должна быть строка JSON, а не проанализированный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...