Ajax를 알기 쉽게 해설! (실장편)
Ajax 구현에 있어서 아래의 3개의 섹션으로 나누었으므로, 조금씩 이해해 주시면 다행입니다!
➀ Ajax로 요청 보내기!
➁ 컨트롤러와 jbuilder를 준비!
➂ 응답을 처리하여 화면에 표시!
그럼 마침내 Ajax 구현으로 들어갑시다! ! !
➀ Ajax로 요청 보내기!
완성된 코드에서 설명하겠습니다!
posts.js
$(function() {
$("#new_post").on('submit', function(e) {
e.preventDefault();
var formData = new FormData(this);
var url = $(this).attr('action');
$.ajax({
url: url,
type: "POST",
data: formData,
dataType: 'json',
processData: false,
contentData: false
})
})
});
◯위에서 순서를 따라 설명하겠습니다!
· $("#new_post").on('submit', function(e) {
양식이 제출되었을 때 이벤트가 발화하도록 설정하고 있습니다!
여기서의 주의점은 이벤트의 발화원은 송신 버튼이 아니고, 폼 전체의 정보를 보내
하고 싶으니까 폼 태그의 ID를 지정한다!
· e.preventDefault
이것은 폼이 송신되었을 때, 디폴트라고 폼을 송신하기 위한 통신이 되어 버리기 때문에, 디폴트의 이벤트를 정지해 주는 역할이 있다!
· var formData = new FormData(this);
폼의 값을 상수에 대입하고 있다!
(this)의 내용은 ("#new_post")입니다!
· var url = $(this).attr('action');
데이터를 전송하는 URL을 상수로 할당!
attr은 ("#new_post")에서 ( 'action') 속성을 검색합니다! 라는 의미입니다!
· ajax의 설명
url: 정보를 보내고 싶은 URL처!
type: Rails의 HTTP 메소드에 해당하는 것!
data: 보내는 정보!
dataType: 유형!
processData : FormData 객체로 데이터를 검색하는 경우에 설명한다고 기억하면 OK!
contentData : FormData 객체로 데이터를 검색하는 경우에 설명한다고 기억하면 OK!
➁ 컨트롤러와 jbuilder를 준비!
이번에는 3개의 파일을 편성해 나가기 때문에, 우선은 전 섹션에서 기술을 한 posts.js로부터 봅시다!
posts.js
$(function() {
$("#new_post").on('submit', function(e) {
e.preventDefault();
var formData = new FormData(this);
var url = $(this).attr('action');
$.ajax({
url: url,
type: "POST",
data: formData,
dataType: 'json',
processData: false,
contentData: false
})
.done(function(post){
})
.fail(function(post){
})
})
});
◯위에서 순서를 따라 설명하겠습니다!
·.done(function(post){
ajax가 성공했을 때 수행되는 처리를 여기에 설명합니다!
·.fail(function(post){
ajax가 실패했을 때 행해지는 처리를 여기안에 기술합니다!
계속해서, 컨트롤러의 기술을 확인해 갑니다!
posts_controller.rb
class PostsController < ApplicationController
def index
@post = Post.new
@posts = Post.all
end
def create
@post = Post.create(post_params)
end
private
def post_params
params.require(:post).permit(:text)
end
end
여기의 설명은 특히 어렵지 않습니다!
그러나 create 액션에 대한 템플릿 엔진을 준비해야합니다 ...
그것이 jbuider입니다!
create.json.jbuider 파일을 views/posts/direct 아래에 작성합시다! ! !
create.json.jbuider
json.text @post.text
· json으로 읽다
@post.text를 json.text로 읽고 있습니다! (오른쪽에서 왼쪽)
➂ 응답을 처리하여 화면에 표시!
완성된 코드에서 설명하겠습니다!
posts.js
$(function() {
function buildPost(post){
var html = `<div class="content">
${post.text}
</div>`
return html;
}
$("#new_post").on('submit', function(e) {
e.preventDefault();
var formData = new FormData(this);
var url = $(this).attr('action');
$.ajax({
url: url,
type: "POST",
data: formData,
dataType: 'json',
processData: false,
contentData: false
})
.done(function(post){
var html = buildPost(post);
$('.contents').append(html);
$('post_text').val('');
$('.form__submit').prop('disabled',false);
})
.fail(function(post){
alert('エラー');
})
})
});
◯순을 따라 설명하겠습니다!
・function buildPost(post)
실제로 삽입하는 HTML 정보를 정의합니다!
return으로 결과를 돌려준다!
· $('.contents').append(html);
삽입할 HTML의 부모 요소를 지정합니다!
content가 아니라는 점에 주의!
· $('post_text').val('');
양식이 제출되면 양식 내용을 재설정하십시오!
· $('.form__submit').prop('disabled',false);
Ajax의 기본값이라면 한 번 보내기 버튼을 누르면 두 번째가 작동하지 않습니다 ...
그것을 해제하고 있습니다!
이상으로 Ajax의 구현이 완료입니다! ! !
처음에는 구조를 이해하는 것이 매우 어려웠습니다.
중요한 것은 대략적인 흐름을 잡고, 작업하면서 디버그를 하고 확인해 나가는 것이라고 생각합니다!
조금씩 익숙해 갑시다!
그럼 조용히 감사합니다!
* 아직도 잡기 때문에 의견 등 있으시면 부담없이 코멘트 부탁드립니다!
Reference
이 문제에 관하여(Ajax를 알기 쉽게 해설! (실장편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wacker8818/items/687f6117d2c454355e8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)