<button onclick="openclose()" class="btn btn-primary btn-lg">포스팅박스 열기</button>
<script>
function openclose() {
#id값 post-box의 display 값이 block이면
if($('#post-box)).css('display')=='block')
{
// post-box를 가리고
$('#post-box').hide();
$('#btn-posting-box").text('포스팅박스 열기')
} else {
// 아니면 post-box를 펴라
$('#post-box').show();
$('#btn-posting-box").text('포스팅박스 딛ㄱ;')
}
}
</script>
<button id="btn-posting-box" onclick="openclose()" class="btn btn-primary btn-lg">포스팅박스 열기</a> //포스팅박스 열기 버튼에 id값 주기
<div class="form-post" id="post-box" style="display:none">
$.ajax({
type: "GET", // GET 방식으로 요청한다.
url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99", //서버에 있는 API
data: {}, // 요청하면서 함께 줄 데이터 (GET 요청시엔 비워두세요)
success: function(response){ // 서버에서 준 결과를 response라는 변수에 담음
console.log(response) // 서버에서 준 결과를 이용해서 나머지 코드를 작성
}
})
response는 api호출의 결과를 받아주는 매개변수!
위에서 response 부분이 처음에는 좀 헷갈렸는데 임의읭 변수일 뿐 response를 result 로 바꿔도 결과값은 똑같다고 한다 .
서버에서 return jsonify() 로 반환시켜준 것을 response가 받는 것이다
서버에서 jsonify(response) 를 쓰는 이유는 데이터를 밑 그림과 같은 형식으로 만들어주기 때문! (질문방에서 도움받음)
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
same_ages = list(db.users.find({'age':21},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
POST (REVIEW 저장)
: 클라이언트에서 주는 정보를 서버가 받아옴 => 디비에 저장해야함 => 저장 성공시 응답데이터보냄
GET (DB에 저장된 리뷰 보여주기)
: 서버가 DB로부터 리뷰를 찾아와 응답해줌 => 클라이언트는 이 응답을 서버로부터 받아 보여줌
서버 코드
@app.route('/review', methods=['POST'])
def write_review():
title_receive = request.form['title_give']
author_receive = request.form['author_give']
review_receive = request.form['review_give']
doc = {
'title': title_receive,
'author': author_receive,
'review': review_receive
}
db.bookreview.insert_one(doc)
return jsonify({'msg': '리뷰가 저장되었습니다'})
@app.route('/review', methods=['GET'])
def read_reviews():
reviews = list(db.bookreview.find({}, {'_id': False}))
return jsonify({'all_reviews': reviews})
function makeReview() {
let title = $('#title').val()
let author = $('#author').val()
let review = $('#bookReview').val()
if (title == '' || author == '' || review == '') {
alert('다시 입력해주세요')
}
else {
$.ajax({
type: "POST",
url: "/review",
data: {title_give:title,author_give:author,review_give:review},
success: function (response)
{
alert(response["msg"]);
window.location.reload();
}
})
}
}
function showReview() {
$.ajax({
type: "GET",
url: "/review",
data: {},
success: function (response) {
let reviews=response['all_reviews']
for(let i=0;i<reviews.length;i++)
{
let title=reviews[i]['title']
let author=reviews[i]['author']
let review=reviews[i]['review']
let temp_html=`<tr>
<td>${title}</td>
<td>${author}</td>
<td>${review}</td>
</tr>`
$('#reviews-box').append(temp_html)
}
}
})
}
</script>