$.ajax({
type: 'POST',
url: 'xxxx.com/init',
ContentType: 'application/json',
dataType: 'json',
data: data,
success: function(resp) {
$.cookie("tc", resp.tokenCode);
}
});
console.log($.cookie("tc"));
Я пытаюсь создать cookie внутри успеха, но он не работает. он регистрирует undefined...
Ваш console.log
работает до того, как ваш вызов ajax завершается в так называемом состоянии гонки. Браузер добирается до console.log
до завершения вызова ajax, поэтому ваш cookie еще не установлен, поскольку функция обратного вызова успеха еще не была вызвана. Попытка размещения этого оператора регистрации в вашем обратном вызове:
success: function(resp) {
$.cookie("tc", resp.tokenCode);
console.log($.cookie("tc"));
}
resp.tokenCode
Бьюсь об заклад, пустое значение, поэтому вы resp.tokenCode
cookie пустое значение.
Это потому, что ajax-вызовы - это асинхронная операция. Функции, которые могут видеть файлы cookie, должны быть установлены как обратные вызовы или доступны на странице-перезагрузке (если файл cookie все еще существует).
$.ajax({
type: 'POST',
url: 'xxxx.com/init',
ContentType: 'application/json',
dataType: 'json',
data: data,
success: function(resp) {
$.cookie("tc", resp.tokenCode);
myFunction();
}
});
function myFunction() {
console.log($.cookie("tc"));
}
Поскольку у вас также возникают проблемы с $.cookie
, вы можете использовать localStorage
или sessionStorage
следующим образом:
localStorage.tc = resp.tokenCode;
console.log(localStorage.tc);
Консоль.log работает до обратного вызова. Поместите лог внутри обратного вызова и посмотрите, что произойдет.
console.log()
. См. Как вернуть ответ от вызова ajax .