2017-04-25 1 views
0

이 내 코드쿠키. CORS. 브라우저는 preventDefault()없이 폼을 제출하면 쿠키를 설정하지 않습니다.

import Helper from './helper' 
import List from './itemList' 
let myForm = document.getElementById('myForm'); 

function getAlfrescoTicket(e) { 
    e.preventDefault(); //doesn`t set cookie with out it 
    let auth = {}; 
    auth.username = this.username.value; 
    auth.password = this.password.value; 
    let xhr = Helper.getXmlHttp(); 
    xhr.open("POST", List.ticketURL); 
    xhr.onreadystatechange = function() { 
     if (this.readyState === 4 && this.status === 200) { 
      Helper.setCookie('ticket', 
JSON.parse(this.responseText).data.ticket, 1); 
      console.log(Helper.getCookie('ticket')); 
     } 
    }; 
    xhr.send(JSON.stringify(auth)); 
} 

myForm.addEventListener('submit', getAlfrescoTicket); 

내가 e.preventDefault와 쿠키를 설정하면 () (때문에 e.preventDefault의 쿠키가 설정되어 있지만, 내 양식을 작성하지 않고 페이지가 변경되지 않음)입니다 하지만 e.preventDefault()를 사용하지 않으면 양식이 잘 작동하지만 페이지가 변경되지만 쿠키는 없습니다. 쿠키를 설정하고로드 할 페이지를 만드는 방법은 무엇입니까?

+1

'xhr.withCredentials = true' – robertklep

답변

1

귀하는 귀하의 기능에 myForm.submit()을 추가해야합니다.

e.preventDefault없이 코드가 완료되기 전에 양식이 제출됩니다. e.preventDefault 기능을 실행했지만 양식을 제출하는 브라우저의 기본 동작이 분명히 실행되고 있지 않습니다 (기본값을 방지했습니다). :) 그러면 직접 제출하십시오. 한 가지 방법은 여기에 설명되어 있습니다.

+0

그게 전부예요! 고마워, 너 멋지다! –

+0

확인. 나는 그것에 대해 몰랐지만 발견했다. –