flask14 use AJAX POST

jQuery AJAX¸¦ ÀÌ¿ëÇØ POST ¹æ½ÄÀ¸·Î ¼­¹ö·Î JSONÀ» ¿äûÇÏ°í JSONÀ» ÀÀ´ä ¹Þ¾Æ º¸ÀÚ.

¼­¹ö·Î ¹«µ¥ÀÌÅÍ ¿äûÈÄ JSONÀ¸·Î ¹Þ±â

html ÆÄÀÏ

html

<input type="button" name="btn-test" id="btn-none_to_json" value="post, ¼­¹ö URI: /main/none_to_json" />


ÀÚ¹Ù½ºÅ©¸³Æ®

$("#btn-none_to_json").on("click", function () {
    ajax_post_none_to_json();
});

function ajax_post_none_to_json(){
    var request = $.ajax({
        type: 'POST',
        url: "/main/none_to_json",
        data: undefined,
        contentType: 'application/json;charset=utf-8', //request data type
        dataType: 'json', //response dataType

        cache: false,
        async: true,
        timeout: 30000,
        success: function(objs) {
            alert("ajax HTTP Åë½Å ¼º°ø");
             $("#response_result").text("ajax_post_none_to_json : response success");
        },
        error : function() {
            alert("ajax HTTP Åë½Å ½ÇÆÐ. °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϼ¼¿ä.");
        }
    });
} //end of ajax_none_to_json

ÆÄÀ̽ã ÆÄÀÏ
@bp.route('/none_to_json', methods=['POST'])
def none_to_json():
    print('Request URL: http://127.0.0.1:8888/main/none_to_json')

    from flask import jsonify

    userlist = list()
    data = {'username': 'kim', 'userid': '777'}
    userlist.append(data)
    data = {'username': 'lee', 'userid': '888'}
    userlist.append(data)
    response = jsonify(userlist)
    print(userlist)

    #response = json.dumps(userlist, default=str, ensure_ascii=False)
    return response, 201

Ŭ ¶óÀ̾ðÆ®¿¡¼­ ¿äû(º¸³»±â)

¼­¹ö·Î º¸³¾ µ¥ÀÌÅÍ°¡ ¾ø±â ¶§¹®¿¡ data´Â ÁÖ¼® ó¸®ÇÑ´Ù.
¼­¹ö¿¡¼­ ¹ÞÀ» µ¥ÀÌÅÍ Å¸ÀÔÀº jsonÀ¸·Î ¼³Á¤ÇÑ´Ù.

¼­ ¹ö¿¡¼­ ÀÀ´ä(¹Þ±â)

Çöó½ºÅ© ¼­¹ö¿¡¼­´Â µñ¼Å³Ê¸® µ¥ÀÌÅÍ ¸®½ºÆ®¸¦ jsonify³ª json.dumps ÇÔ¼ö·Î jsonÀ¸·Î º¯È¯ÈÄ ¸®ÅÏÇÑ´Ù.


JSONÀ¸·Î º¸³»°í JSONÀ¸·Î ¹Þ±â

html ÆÄÀÏ
<input type="button" name="btn-test" id="btn-json_to_json" value="¼­¹ö URI:  /main/json_to_json" />


$("#btn-json_to_json").on("click", function () {
    ajax_post_json_to_json();
});


function ajax_post_json_to_json(){
    var URI = "/main/json_to_json"
    var PARAMETER = JSON.stringify({"username": "apple", "userid": 33})

    var request = $.ajax({
        type: 'POST',
        url: URI,
        data: PARAMETER,
        contentType: 'application/json;charset=utf-8',
        dataType: 'json',
        cache: false,
        async: true,
        timeout: 30000,
        statusCode: {
             201: function() {
                  console.log( "statusCode 201 response success" );
             }
        },

        success: function(objs, textStatus, jqXHR) {
            alert("ajax HTTP Åë½Å ¼º°ø");

            console.log("objs=", objs);
            console.log("objs[0]=", objs[0]);

            objs.forEach(function(obj) {
                console.log("obj=", obj);
            });

            console.log("success jqXHR status=", jqXHR.status);
            console.log("success jqXHR responseJSON", jqXHR.responseJSON);
        },
        error : function(jqXHR) {
            alert("ajax HTTP Åë½Å ½ÇÆÐ. °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϼ¼¿ä.");
            alert(jqXHR)
        }
    });
} //end of ajax_post_json_to_json

ÆÄÀ̽ã ÆÄÀÏ
@bp.route('/json_to_json', methods=['POST'])
def json_to_json():
    print('Request URL: http://127.0.0.1:8888/main/json_to_json')

    client_json = request.get_json(silent=True)
    print(f"data = {client_json}")

    user_record = model.User.query.filter(
        model.User.username == client_json['username'],
        model.User.userid == client_json['userid']).first()

    print(user_record.serialize)
    response = json.dumps([user_record.serialize], default=str, ensure_ascii=False)
    return response, 201


Ŭ ¶óÀ̾ðÆ®¿¡¼­ ¿äû(º¸³»±â)

¿äû µ¥ÀÌÅÍ Å¸ÀÔÀ» jsonÀ¸·Î ÁöÁ¤ÇÑ´Ù.
contentType: 'application/json;charset=utf-8',

¹ÞÀ» µ¥ÀÌÅÍ Å¸ÀÔÀ» jsonÀ¸·Î ÁöÁ¤ÇÑ´Ù.
dataType: 'json',

data¿¡ º¸³¾µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÑ´Ù.
Å°¿Í µ¥ÀÌÅ͸¦ JSON.stringify ÇÔ¼ö·Î JSONÀ¸·Î º¯È¯ÈÄ¿¡ data ¼Ó¼ºÀ» ÁöÁ¤ÇÑ´Ù.
var PARAMETER = JSON.stringify({"username": "apple", "userid": 33})
data: PARAMETER,


¼­ ¹ö¿¡¼­ ÀÀ´ä(¹Þ±â)

Çöó½ºÅ© ¼­¹ö¿¡¼­´Â µñ¼Å³Ê¸® µ¥ÀÌÅÍ ¸®½ºÆ®¸¦ jsonify³ª json.dumps ÇÔ¼ö·Î jsonÀ¸·Î º¯È¯ÈÄ ¸®ÅÏÇÑ´Ù.

request.get_jsonÀ» ÀÌ¿ëÇØ °ªÀ» ±¸ÇÑ´Ù.
jsonÀÇ Å°¸¦ ÀÌ¿ëÇØ °ªÀ» ±¸ÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
client_json = request.get_json(silent=True)
client_json['username']
client_json['userid']

model.User.query.filter ÇÔ¼ö·Î µ¥ÀÌÅͺ£À̽º¿¡¼­ °Ë»öÇÑ´Ù.
json.dumps ÇÔ¼ö·Î JSONÀ¸·Î º¯È¯ÈÄ ÀÀ´äÇÑ´Ù.

´Ù¿î·Îµå:
/templates/test.html
controller/main_controller.py

ajax_test.zip