플라스크에서 ajax에서 게시 된 데이터를 어떻게 사용할 수 있습니까?
jquery ajax에서 데이터를 게시하는 데 문제가 있습니다.
$('#clickme').click( function() {
var data = save_input(); // data
data['_sid'] = $survey_id; // survey_id injected from flask
data['_uip'] = $user_ip; // user_ip injected from flask, request.remote_addr
$.ajax({
type : "POST",
url : "{{ url_for('mod.load_ajax') }}",
data: JSON.stringify(data),
contentType: 'application/json;charset=UTF-8',
success: function(result) {
console.log(result);
}
});
console.log(data);
});
코드에서 다음 data
과 같은 javascript 객체입니다.
{
'foo' : 'foo',
'bar' : 'bar',
'fo_' : 42,
}
플라스크에서하려는 것은 다음과 같습니다.
@mod.route('/load_ajax', methods=["GET", "POST"])
def load_ajax():
if request.method == "POST":
# load _sid and _uip from posted JSON and save other data
# but request.form is empty.
# >>> request.form
# ImmutableMultiDict([])
return str(request.form)
참조, ajax 요청이 작성되었지만 데이터가 제출되지 않았습니다. 나는 console.log(data)
ajax를 사용하여 data
jquery의 변수에 의미있는 데이터가 실제로 있음을 알 수 있습니다 . 그러나 ajax보기의 request.form이 비어 있습니다. 내 데이터는 어디에 제출됩니까?
시험
$.ajax({
type : "POST",
url : "{{ url_for('mod.load_ajax') }}",
data: JSON.stringify(data, null, '\t'),
contentType: 'application/json;charset=UTF-8',
success: function(result) {
console.log(result);
}
});
그런 다음 서버에서 다음과 같은 데이터의 변수를 참조 할 수 있습니다.
request.json['foo']
콘텐츠 유형이 application/json
데이터가있는 대로 지정되었으므로request.json
As per your example you are not sending a key value pair but rather assigning a JSON string to the jQuery data option. As mentioned in the comments you have to stringify your JSON, create an object with a key (which will be used to access the JSON string from flask) and then assign it to the jQuery data key.
$.ajax({
type : "POST",
url : "{{ url_for('mod.load_ajax') }}",
data: {json_str: JSON.stringify(data)},
contentType: 'application/json;charset=UTF-8',
success: function(result) {
console.log(result);
}
});
@mod.route('/load_ajax', methods=["GET", "POST"])
def load_ajax():
if request.method == "POST":
# load _sid and _uip from posted JSON and save other data
# but request.form is empty.
# >>> request.form
# ImmutableMultiDict([])
return str(request.form['json_str']
)
Have you tried remove contentType? You suppose to post data to Flask.
could you try add fake data like
data:{"hello":"world"} inside ajax? just to check if the hello world arrive to request.form
On the flask side, use:
data = request.get_json()
The variable data now has the dictionary you sent using ajax and you can now manipulate it with python
참고URL : https://stackoverflow.com/questions/14908864/how-can-i-use-data-posted-from-ajax-in-flask
'Development Tip' 카테고리의 다른 글
float 컬렉션에 대한 Python 단위 테스트의 assertAlmostEqual (0) | 2020.12.12 |
---|---|
날짜 시간 x 시리즈에 대한 엑셀 플롯 (0) | 2020.12.12 |
선행 공백을 무시하면서 2 개의 파일을 어떻게 비교할 수 있습니까? (0) | 2020.12.12 |
pytz 요구 사항을 충족하는 버전을 찾을 수 없습니다. (0) | 2020.12.12 |
편집기 창 분할 바로 가기는 무엇입니까? (0) | 2020.12.12 |