#javascript #jquery #json #ajax #flask
#javascript #jquery #json #ajax #flask
Вопрос:
Я озадачен, почему мой Flask с именем JSON data не считывается оператором ожидания успеха ajax, который очень хорошо работает в другом месте. Я понимаю, что оператор Success: должен ожидать возврата данных, и это происходит, но тогда возвращаемые данные недоступны как любой JSON. Нет ошибок консоли или браузера, которые указывали бы, почему данные считаются «недействительными»
Функция Flask
@blueprint.route('/target_liner')
def target_liner():
ind_id = int(request.args.get('ind_id'))
label = "1508 Loss Correction"
data = '[{"Program_Name":"' label '"}]'
return data
Данные JSON
[{"Program_Name":"1508 Loss Correction"}]
// Это подтвержденный законный JSON
Javascript
function updates() {
$.ajax({
url: "/target_line",
method: "GET",
data: {
ind_id: 1508
},
success: function (data) {
console.log(data);
alert(data); // This shows the JSON string correctly in Chrome Inspect console
alert(data.Program_Name);
alert(data[0]['Program_Name']);
alert(data[0].Program_Name );
}
});
};
updates();
Комментарии:
1. Ваш
data
— это строка. Они не преобразуются в объект. Попробуйте добавитьdataType: "json",
к вашему$.ajax({})
вызову.2. Немедленно решил проблему. Я пробовал это раньше, но из-за несвязанной проблемы я удалил его — thx Rocket! @RocketHazmat
Ответ №1:
Перенастроенные данные представляют собой строку. Вы можете либо выполнить JSON.parse (data) после успешного выполнения, либо использовать тип данных: ‘json’ в вашем ajax-запросе. вы можете получить ошибку синтаксического анализа, если ваша строка JSON не сформирована должным образом при использовании типа данных: ‘json’ .
Ответ №2:
У вас есть три возможности:
- в вашей flask измените возвращаемые данные на return jsonify (данные);
- добавьте тип данных: «json», к вашему вызову ajax согласно комментарию @Rocket Hazmat;
- добавьте к ответу successes преобразование из строки в json: data = JSON.parse(данные);
$.ajax({
url: "/target_line",
method: "GET",
data: {
ind_id: 1508
},
success: function (data) {
data = JSON.parse(data);
console.log(data);
console.log(Object.keys(data[0])[0]); // print: Program_Name
console.log(data[0].Program_Name ); // print: 1508 Loss Correction
}
});
Комментарии:
1. Или, в-четвертых, просто используйте
$.getJSON()