Google 양식 맞춤설정으로 비동기 전송 [Ajax]
15069 단어 HTMLgoogleform아약스jQuery
방법은 다양하지만 솔직히 PHP 파일을 만지고 싶지 않아 ... 서버는 가지고 다른 것입니다.
이번 취재반은
ついにそのベストプラクティスを発見することに成功した。
전제 조건
목표: Google 설문지에서 정적 사이트의 설문지 이동
이 기사를 읽고 할 수 있게 되는 것
Google 양식 만들기
우선은 Google 양식을 작성한다.
HTML 폼으로 만들 예정의 것과 당연히 같은 것을 만듭니다.
input,textarea의 name의 값, form의 action처의 URL를 메모한다
Chrome의 유효성 검사 기능으로 검색합니다.
라디오 버튼만, 각 요소의 뒤에 마지막에 1개만 input가 있으므로 거기만 메모합니다.
여기가 양식을 제출합니다.
HTML 양식 작성
<div class="form-wrapper">
<form
action="https://docs.google.com/forms/u/0/d/e/hoge"
id="form">
<div class="box">
<label for="name">お名前</label>
<input type="text" name="entry.396652" id="name" placeholder="お名前" required>
</div>
<div class="box">
<label for="mail">メールアドレス</label>
<input type="mail" name="entry.1934980" id="mail" placeholder="メールアドレス" required>
</div>
<div class="box">
<p class="box">お好きなプログラミング言語</p>
<div class="flex-box"><input type="radio" name="entry.1977612" required value="scala">
<p>scala</p>
</div>
<div class="flex-box"><input type="radio" name="entry.1977612" required value="kotlin">
<p>kotlin</p>
</div>
<div class="flex-box"><input type="radio" name="entry.1977612" required value="basic">
<p>basic</p>
</div>
</div>
<div class="box">
<textarea name="entry.181178" id="" cols="30" rows="10" placeholder="自由記述"></textarea><!-- /# -->
</div>
<input type="submit" class="submit-btn">
</form>
<p class="end-message">お問い合わせありがとうございました</p>
<p class="false-message">送信失敗です</p>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
여기에서 google 양식과 동일한 내용의 HTML 양식을 만들고 name과 action의 값을 맞춥니다.
이 근처는 나중에 필요하게 되기 때문에, 기술해 둡니다.
제출해보기
제출하면 ...
오, 받을 수 있습니다! !
그리고 여기서 감동해도 좋지만,
いきなりこんなページに飛ばされるのは、ユーザビリティ的に問題があります。
여기에서 ajax 구현으로, 이 화면으로 천이하지 않게 손을 더해 갑시다.문의 완료 메시지를 낸다.
$(document).ready(function () {
$('#form').submit(function (event) {
var formData = $('#form').serialize();
$.ajax({
url: "https://docs.google.com/forms/u/0/d/e/hoge",
data: formData,
type: "POST",
dataType: "xml",
statusCode: {
0: function () {
$(".end-message").slideDown();
$(".submit-btn").fadeOut();
//window.location.href = "thanks.html";
},
200: function () {
$(".false-message").slideDown();
}
}
});
event.preventDefault();
});
});
우선
serializeでform内のinputのvalueを取り出しgormDataに代入
그 후 urlにgoogleフォーム送信先(action)のurl記入
그리고 jQueryのメソッドで送信後「完了メッセージ表示」
마지막으로 event.preventDefault
에서 submit 이벤트를 무효화하고 천이시키지 않는다라는 흐름.
전송 후 완료 메시지를 slideDown으로 표시할 수 있습니다.
さりげに送信後submit-btnをfadeOutさせているところに、気配りを感じますよね?(二重投票防止)
비동기에서도 데이터를 받을 수 있습니다. 뭔가 감동...
썬크스 페이지 전환
이쪽은 순간입니다.
statusCode: {
0: function () {
//$(".end-message").slideDown();
//$(".submit-btn").fadeOut();
window.location.href = "thanks.html";
},
window.location.href
에서 보낸 후 thanks.html로 날아갑니다.css 쓰고 있지 않기 때문에, 페이지 천이하고 있는 느낌이 없습니다만, 일단 천이하고 있습니다 w
이렇게하면 Google Forms의 집계 기능이 엄청납니다 ...
문제점
밸리데이션
입력 필수 정도라면,
<input type="text" required>
처럼 required 사용하면
데포에서 이와 같이 표시해 줍니다만, 밸리데이션은 프런트보다 서버 사이드(PHP)로 하는 것이 철판인 것 같기 때문에, 어떻습니까.
교차 도메인 문제
나도 자세하지 않지만 그런 문제가 있는 것 같다.
h tps://아아안세 7. bgs포 t. 이 m/2019/01/오오gぇーふぉr마오오 sc로s. HTML
동작하기 때문에, 치명적이라고는 생각하지 않습니다만, 에러를 검지할 수 없다든가.
위탁 제작의 경우 상대방에게 양식을 만들어야합니다.
Google 계정 정보를 받는 것은 번거롭기 때문에 상대방에게 양식을 만들어야 합니다.
조금, 상대의 IT 리터러시가 필요할지도 모릅니다.
[추가]: 메일 전송 기능을 구현하는 방법을 썼습니다.
google 양식 제출 후 메일 제출 기능 구현 [Google Apps Script]
참고 기사
Google 양식을 맞춤설정하고 배포하고 Ajax 처리
Google 양식을 자유롭게 맞춤설정
자동 회신 기능 참고 기사
Google 설문지를 사이트에 삽입하고 자동 회신 이메일 보내기 (1)
Reference
이 문제에 관하여(Google 양식 맞춤설정으로 비동기 전송 [Ajax]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/samuraibrass/items/d6afda6bd8f3306cee4f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)