Используется фреймворк Flask. Есть AJAX запрос. На сервер данные отправляется нормально, и сервер также отправляет данные в ответ, с этим проблем нет, но:
alert(response)
возвращает [object Object]
.
alert(response.data[0])
возвращает undefined
.
function requestFromCalendar() {
var first = selected[0];
var second = selected[1];
first.month = first.month+1;
second.month = second.month+1;
$.ajax({
data: {
first: JSON.stringify(first),
second: JSON.stringify(second)
},
type: 'POST',
dataType: 'json',
url: '/get_selected_values'
}).done(function(response) {
alert(response);
alert(response.data[0]);
})
}
@app.route('/get_selected_values', methods=['POST'])
def get_selected_values():
values = request.form.get("first")
first_date = json.loads(values)
values = request.form.get("second")
second_date = json.loads(values)
t = time(0, 0, 0, 0)
d = date(year=first_date['year'], day=first_date['day'], month=first_date['month'])
start_date = datetime.combine(d, t)
start_date = start_date + timedelta(microseconds=123456)
d = date(year=second_date['year'], day=second_date['day'], month=second_date['month'])
end_date = datetime.combine(d, t)
end_date = end_date + timedelta(microseconds=123432)
data = fetch_selected_date(start_date=start_date, end_date=end_date, login=current_user.get_id())
if data:
return jsonify({'data': data})
return jsonify({'data': []})
Почему не удается увидеть ответные данные от сервера? Как это исправить?
EDIT1
console.log(response)
выводит
{data: Array(0)}
и
console.log(response.data[0])
выводит
undefined
EDIT2
Данные точно есть в data
.
Добавлен print data
в код Питона. В консоле вывод значений.
EDIT3
Согласно ответу меняю код на pyhton и js. Но данные так и не могу получить.
python:
...
data = fetch_selected_date(start_date=start_date, end_date=end_date, login=current_user.get_id())
data = json.dumps(data)
return data
js:
$.ajax({
data: {
first: JSON.stringify(first),
second: JSON.stringify(second)
},
type: 'POST',
url: '/get_selected_values'
}).done(function(response) {
var result = JSON.stringify(response);
console.log('result:'+result); // выдает ответ: result:"[]"
//если console.log('result:'+result[0]); то ответ будет: result:"
})
Как исправить такое положение?
что на ноде, что на клиенте
https://github.com/axios/axios
что-то вроде этого
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
let first,second;
first = JSON.stringify(first),
second = JSON.stringify(second)
console.log(first,second)// смотрим что передаём
axios.post('/user', {
first,second,
})
.then(function (response) {
// в случае ноды, ставим здесь брейкпоинт(при наличии отладчика)
// и смотрим переменную response
console.log(response);
})
.catch(function (error) {
console.log(error);
});
</script>
а теперь к вопросу, предполагаю, что виной всему строчка
dataType: 'json'
возможно $
ожидает данные в формате json а получает массив, если это так - масcив поместить в переменную объекта, например qwa
resp = {
qwa:[1,2,3]
}
так же не забыть привести к строке
resp = json.dumps(resp) - питон
resp = JSON.stringify(resp) - js
перед тем как вернуть напечатать
print(type(resp) is str) // проверяем, должна быть строка
print(resp)
return resp // возвращаем
да! есть нюанс, например у fetch response.json это Promise
ещё, как вариант, серверу необходимо передать
content-type: application/json
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Доброго времени суток, пожалуйста, объясните как работает данный код, ответ должен выйти - 2
Вопрос по работе модулей и moduleexports в node js
Есть форма с полем input, и кнопка buttonНужно при вводе к примеру 0 кнопка исчезала, а при вводе 1 кнопка появлялась в режиме реального времени без...
Всем приветСтолкнулся с задачей ,над которой уже долгое время ломаю голову