AJAX (Asynchronous Javascript And XML)¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ¾Ë¾Æ º»´Ù.
AJAX´Â XMLHttpRequest¸¦ ÄÚµå·Î ó¸® Çϱ⠶§¹®¿¡ Äڵ尡 º¹ÀâÇÏ´Ù. jQuery¸¦ »ç¿ëÇϸé Äڵ尡 °£°áÇØÁø´Ù.
¿©±â¼´Â QueryString ¹æ½Ä°ú URLÀ» ÅëÇؼ ¼¹ö·Î ¿äûÇÏ°Ú´Ù.
AJAX·Î QueryStringÀ» ÀÌ¿ëÇÑ ¹æ½Ä
Äõ¸®½ºÆ®¸µÀ» ¼¹ö·Î º¸³»°í ¼¹ö¿¡¼ ÅؽºÆ®·Î °á°ú°ªÀ» ¹Þ´Â´Ù.
html ÆÄÀÏ
html
<input type="button" name="btn-test" id="btn-querystring_to_text"
value="get, ¼¹ö URI: /main/querystring_to_text" />
ÀÚ¹Ù½ºÅ©¸³Æ®
$("#btn-querystring_to_text").on("click", function () {
ajax_get_querystring_to_text();
});
function ajax_get_querystring_to_text(){
var URI = "/main/querystring_to_text"
var PARAM1 = "?string_data="+"hello";
var PARAM2 = "&int_data="+3;
var URI = URI + PARAM1 + PARAM2
var request = $.ajax({
type: 'GET',
url: URI,
dataType: 'text', //response dataType
timeout: 30000, //millisecond unit
success: function(objs) {
alert("ajax HTTP Åë½Å ¼º°ø");
$("#response_result").text("ajax_get_querystring_to_text :" + objs);
},
error : function() {
alert("ajax HTTP Åë½Å ½ÇÆÐ. °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϼ¼¿ä.");
}
});
} //end of
ajax_get_querystring_to_text
ÆÄÀ̽ã ÆÄÀÏ
@bp.route('/querystring_to_text', methods=['GET'])
def querystring_to_text():
print('Request URL:
http://127.0.0.1:8888/main/querystring_to_text')
string_value = request.args.get('string_data')
int_value = request.args.get('int_data')
response = "success : " + string_value + " , " +
int_value
return response
AJAX ¿ë¾î ¼³¸í
type : POST ¶Ç´Â GET
url : ¿äû ¼¹öÀÇ url
data : ¼¹ö·Î º¸³¾ µ¥ÀÌÅÍ
async : µ¿±â ¶Ç´Â ºñµ¿±â ÁöÁ¤
timeout : ¹Þ±â ±â´Ù¸®´Â ½Ã°£À¸·Î ¹Ð¸® ¼¼ÄÁµå ´ÜÀ§.
contentType : º¸³»´Â µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î (request data type)
dataType : ¼¹ö¿¡¼ ¹Þ´Â µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î (response dataType)
success : ¼¹ö·Î ¿äû ¼º°ø½Ã È£ÃâÇØ¾ß ÇÒ ÇÔ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.
error : ¼¹ö·Î ¿äû ½ÇÆнà ȣÃâÇØ¾ß ÇÒ ÇÔ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.
jqXHR : $.ajax()¿¡ ÀÇÇØ ¹ÝȯµÇ´Â XMLHttpRequest ¿ÀºêÁ§Æ®ÀÇ »óÀ§ °´Ã¼ÀÌ´Ù.
Ŭ¶óÀ̾ðÆ®¿¡¼ ¿äû(º¸³»±â)
Äõ¸®½ºÆ®¸µ ¹æ½ÄÀ¸·Î ÇÒ¶§´Â data¿Í contentTypeÀº ¼±¾ðÇÏÁö ¾Ê´Â´Ù.
url¿¡ µ¥ÀÌÅ͸¦ Æ÷ÇÔ½ÃÄÑ º¸³½´Ù.
contentTypeÀ» ¼±¾ðÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.
contentType: 'text/html;charset=utf-8'
¹®ÀÚ¿°ú Á¤¼ö°ª 2°³ÀÇ µ¥ÀÌÅÍ·Î º¸³¾¶§´Â ´ÙÀ½°ú °°ÀÌ º¸³½´Ù.
URL + "?key="+"°ª" + "&key1="+°ª;
/main/querystring_to_text?string_data=hello&int_data=3
¼¹ö¿¡¼ ÀÀ´ä(¹Þ±â)
ÆÄÀ̽㿡¼´Â GET ¹æ½ÄÀ̹ǷΠrequest.args.get(key)·Î ¼¹ö·Î ¿äûÇÑ °ªÀ» ±¸ÇÒ¼ö ÀÖ´Ù.
string_value = request.args.get('string_data')
int_value = request.args.get('int_data')
Ŭ¶óÀ̾ðÆ®¿¡ ÅؽºÆ® Çü½ÄÀ¸·Î ´Ù½Ã º¸³½´Ù.
response = "success : " + string_value + " , " +
int_value
return response
Äõ¸®½ºÆ®¸µÀ¸·Î º¸³»±â, ¼¹ö¿¡¼ DB Á¢±ÙÈÄ , µ¥ÀÌÅÍ Å¬¶óÀ̾ðÆ®·Î º¸³»±â
html ÆÄÀÏ
html
<input type="button" name="btn-test" id="btn-get_query_to_json"
value="get, ¼¹ö URI: /main/get_query_to_jsondb" />
ÀÚ¹Ù½ºÅ©¸³Æ®
$("#btn-get_query_to_json").on("click", function () {
ajax_get_query_to_json();
});
function ajax_get_query_to_json(){
//º¸³»±â :
URI?Å°À̸§=°ª&Å°À̸§1=°ª1"
//Çöó½ºÅ© ¹Þ±â
: GET HTTP Method + reuest.args.get("Å°°ª")
//data
¼Ó¼ºÀº »ç¿ë ÇÏÁö ¾Ê´Â´Ù.
var URI = "/main/get_query_to_jsondb";
var PARAMETER="?username=apple&userid=33";
URI = URI + PARAMETER;
$.ajax({
type: 'GET',
url: URI,
// data: data¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.
contentType:
'text/html;charset=utf-8',
dataType: 'json',
cache: false,
async: true,
timeout: 30000,
success: function(objs) {
alert("ajax ±â¹Ý HTTP Åë½Å ¼º°ø");
console.log("objs=", objs);
console.log("objs[0]=", objs[0]);
},
error : function(jqXHR) {
alert("ajax HTTP Åë½Å ½ÇÆÐ. °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϼ¼¿ä.");
alert(jqXHR)
}
});
} //end of ajax_get_query_to_json
ÆÄÀ̽ã ÆÄÀÏ
@bp.route('/get_query_to_jsondb', methods=['GET'])
def get_query_to_jsondb():
print('Request URL:
http://127.0.0.1:8888/main/get_query_to_jsondb')
client_username = request.args.get("username")
client_userid = request.args.get("userid")
row_list = model.User.query.filter(
model.User.username ==
client_username,
model.User.userid ==
client_userid).all()
user_record = []
for i, row in enumerate(row_list):
print(f"{i} - row =
{row.serialize}")
user_record.append(row.serialize)
response = json.dumps([user_record], default=str,
ensure_ascii=False)
return response, 201
Ŭ¶óÀ̾ðÆ®¿¡¼ ¿äû(º¸³»±â)
Äõ¸®½ºÆ®¸µÀ¸·Î º¸³»¹Ç·Î ÅؽºÆ®·Î contentTypeÀ» ÅؽºÆ®·Î ÁöÁ¤ÇÑ´Ù.
contentType:
'text/html;charset=utf-8'
µ¥ÀÌÅÍ´Â URL°ú °°ÀÌ ÁöÁ¤ÇÑ´Ù.
/main/querystring_to_text?string_data=hello&int_data=3
ÀÀ´ä µ¥ÀÌÅÍ Å¸ÀÔÀº JSONÀ¸·Î ÁöÁ¤ÇÑ´Ù.
dataType: 'json'
¼¹ö¿¡¼ ÀÀ´ä(¹Þ±â)
µ¥ÀÌÅ͸¦ getÀ¸·Î ¹Þ¾Ò±â ¶§¹®¿¡ request.args.get ÇÔ¼ö·Î °ªÀ» ±¸ÇÑ´Ù.
client_username = request.args.get("username")
client_userid = request.args.get("userid")
model.User.query.filter ÇÔ¼ö·Î DB¿¡¼ °ªÀ» °Ë»öÇÑ´Ù.
DBÀÇ °Ë»ö °á°ú °ªÀ» ¸®½ºÆ®¿¡ user_record ¸®½ºÆ®¿¡ Ãß°¡ÇÑ´Ù.
json.dumps·Î ¸®½ºÆ®ÀÇ °ªÀ» JSONÀ¸·Î º¯È¯ÇÑ´Ù.
URLÀ» ÅëÇØ ¼¹ö·Î ¿äûÇϱâ
html ÆÄÀÏ
html
<p><label>¼¹ö ¿äû ¹®ÀÚ¿:</label> <input
type = "text" id="input_value_string" placeholder = "°ø¹é ¾øÀÌ ¹®ÀÚ¿À» ÀÔ·Â
Çϼ¼¿ä." /></p>
<p><label>¼¹ö ¿äû Á¤¼ö:</label> <input type = "number"
id="input_value_int" placeholder = "°ø¹é ¾øÀÌ Á¤¼ö¸¦ ÀÔ·Â Çϼ¼¿ä." /></p>
<p><input type="button" value="¼¹ö·Î Àü¼Û"
id="btn-ajax_get_url">
ÀÚ¹Ù½ºÅ©¸³Æ®
$("#btn-ajax_get_url").on("click", function () {
ajax_get_URL();
});
function ajax_get_URL(){
alert("ajax_get_URL.");
var string_data = $("#input_value_string").val();
var int_data = $("#input_value_int").val();
var URI = "/main/ajax_url"
var PARAM1 = "/" + string_data;
var PARAM2 = "/" + int_data;
var URI = URI + PARAM1 + PARAM2
$.ajax({
type: 'GET',
url: URI,
// data¾øÀ½ : URL ÆĶó¸ÞÅÍ·Î º¸³»±â ¶§¹®¿¡ ÁÖ¼®Ã³¸®ÇÑ´Ù.,
contentType: 'text/html;charset=utf-8',
dataType: 'text',
cache: false,
async: false,
timeout: 30000,
success: function(data) {
alert("ajax url Åë½Å ¼º°ø");
alert(data)
},
error : function(e) {
alert("ajax HTTP Åë½Å ½ÇÆÐ. °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϼ¼¿ä.");
alert(e)
}
});
} // end of ajax_get_URL
ÆÄÀ̽ã ÆÄÀÏ
@bp.route('/ajax_url/<string_value>/<int:int_value>', methods=['POST', 'GET'])
def get_url(string_value, int_value):
print('Request URL: http://127.0.0.1:8888/main/ajax_url')
print(f"string value = {string_value}")
print(f"int value = {int_value}")
response = f"SUCCESS = {string_value}, {int_value}"
return response
Ŭ¶óÀ̾ðÆ®¿¡¼ ¿äû(º¸³»±â)
- url = URI + "/" + "µ¥ÀÌÅÍ"
- GET ¹æ½ÄÀ¸·Î ¿äûÀ» ÇÑ´Ù.
- º¸³¾ contentTypeÀ» text·Î ¼³Á¤ : contentType: 'text/html;charset=utf-8'
- URLÀ» ÀÌ¿ëÇϱ⠶§¹®¿¡ data ¼Ó¼ºÀº ÁÖ¼®Ã³¸®
- ¹ÞÀ» µ¥ÀÌÅÍ Å¸ÀÔÀº 'text'·Î ÇÑ´Ù.
¼¹ö¿¡¼ ÀÀ´ä(¹Þ±â)
- Çöó½ºÅ©¿¡¼ ¶ó¿ìÆà º¯¼ö·Î ¹Þ´Â´Ù.
'/url_ajax/<string_value>/<int:int_value>'
´Ù¿î·Îµå:
/templates/test.html
controller/main_controller.py
ajax_test.zip
Âü°í)
ajax Åë½Å ¹æ¹ý (QueryString)
https://gspkr.tistory.com/107
[spring] ajax ¸ÖƼÆÄÀÏ(MultipartFile) ¾÷·Îµå ó¸®
https://cheonfamily.tistory.com/6
|