2017-09-30 3 views
0

편집을 작동하지 리디렉션 : 나는 양식을 수동으로 미세 제출하지만, 자바 스크립트 아무것도

일어날 것 같다와 내가 리디렉션 다음 페이지로드 autosubmit하는 양식을 얻을려고 언급한다 사용자. 이유는 PHP 페이지의 일부이며 데이터가 내 데이터베이스로 이동해야하지만 타사 SMS 플랫폼에 변수를 POST 한 다음 사용자 대시 보드로 돌아가는 것입니다.

내 양식은 다음과 같습니다

<html> 
    <form action="https://www.example.com" id="myForm" method ="POST"> 
     <input type="hidden" name="apiKey" value="withheld"> 
     <input type="hidden" name="message" value="<?php echo $club_name ?> have requested you to play for them this weekend. Please login to your account to see more information and accept."> 
     <input type="hidden" name="to" value="<?php echo $to ?>"> 
     <input type="hidden" name="from" value="withheld"> 
     <input type="submit" name="submit" id="submit" value="Submit"> 
    </form> 
</html> 

이 작동하는 것 같다 그래서 잘 내가 어떤 자바 스크립트가 잘못된 가정 : 당신은 이름이 아닌 다른 이름을 사용할 필요가

<script> 
document.getElementById('myForm').submit(); 
    window.location.replace("https://www.example.com"); 
</script> 
+0

스크립트를 어디에 넣었습니까? 콘솔에서 오류를 확인 했습니까? – adeneo

+0

코드에서 실제로 작동하지 않는 것은 무엇입니까? 나는 리다이렉트를 추측한다. 양식을 제출하고 리디렉션의 일종 인 서버 응답을받는 것입니다. 서버 호출이 보류 중일 때,'location' 객체에 대한 변경은 브라우저에 의해 차단됩니다. – Teemu

+0

Teemu에게 고마워한다는 것을 깨닫지 못했습니다. 그러나 양식 자체는 제출하지 않아서 절망적입니다. – Rockhopper

답변

2

= 모든 이름 속성이 양식의 속성으로 설정되고 양식의 기본 "제출"속성을 무시하고 기본 양식 메서드 "submit()"이 사라짐에 따라 "제출" .

https://developer.mozilla.org/de/docs/Web/API/HTMLFormElement "명명 된 입력은 소유자 양식 인스턴스에 속성으로 추가되며 동일한 이름을 공유하는 경우 기본 속성을 덮어 쓸 수 있습니다. 예를 들어 action이라는 입력이있는 양식의 action 속성은 해당 입력을 반환합니다. 양식의 작업 HTML 속성). "

+0

이 "일종의"감사합니다. 이제 페이지가 리디렉션됩니다. 그러나 양식은 여전히 ​​제출되지 않습니다. – Rockhopper

+0

제 추측 : 브라우저의 경우 두 줄 모두 웹 요청이며 일반적으로 (예 : 링크를 클릭하고 나중에 같은 링크의 다른 링크를 클릭 할 때와 같이 예상대로) 첫 번째 요청이 취소되고 두 번째 작업이 수행됩니다. AFAIK에는 2 가지 선택 사항이 있습니다. 1) 제출 대상이 리디렉션을 수행해야합니다. 2) 제출하지 않지만 아약스를 통해 데이터를 게시, 아약스 반환, 단순히 결과를 무시하고 리디렉션 않습니다. –

0

코드에 window.location.replace("https://www.example.com"); 줄이 적합하지 않습니다. submit() 함수가 양식을 제출하려고 시도하고 페이지를 변경 한 다음 함수를 교체하면 양식을 제출할 수 없으므로 페이지가 리디렉션됩니다. js를 통해이 작업을 수행하는 올바른 방법은 ajax를 통해 양식을 제출하고 Ajax의 성공 콜백을 실행하십시오. document.getElementById('myForm').submit()