Я пытаюсь вернуть результат функции в Python обратно в мой javascript через AJAX. В настоящее время я получаю Этот ответ, в то время как ожидаю "True" или "False"
jquery:
var test = $.getJSON("/chk_chn", {
name: channel_name
});
alert(test.toSource())
питон:
@app.route("/chk_chn")
def chk_chn_unique():
"""Checks a name against all existing Channels in a Channel List. Returns True if name is unique, False otherwise"""
name = request.args.get("name")
for channel in Channels:
if channel.get_name() == name:
return jsonify(result=False)
return jsonify(result=True)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ты пробовал:
return jsonify({result: True})
Вам не хватает функции обратного вызова и вы просто распечатываете объект запроса.
Попробуй это:
$.getJSON('/chk_chn', { name: channel_name })
.done(function (data) {
console.info(data);
});
У меня было несколько проблем.
Во-первых, в моем запросе Ajax не было функции обратного вызова. Спасибо Rawri за указание на это. Код теперь следующий.
$.getJSON("/chk_chn", { name: channel_name} )
.done(function( json ) {
console.info(json.result)
// Check Name Uniqueness
if (json.result === false) {
$("#chn_name").after('<span class = "error">Channel name already exists</span>');
}
else {
// Check Channel Length
if (channel_name.length > 20) {
$("#chn_name").after('<span class = "error">Channel Name exceeds maximum length</span>');
return false
}
else {
// Create Channel
socket.emit("create_channel", {"channel_name": channel_name})
// Close the modal
return true;
}
}
})
.fail(function(jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.info("Request Failed: " + err);
});
Моя вторая и еще более глупая проблема заключалась в том, что запрос Ajax вызывается кнопкой, которая существовала в модальном окне. Когда была нажата кнопка, модальное окно было закрыто, и javascript был регенерирован на новой странице, тем самым полностью отбросив мой запрос.
Я исправляю это, возвращая false в моей форме
<form role = "form" id = "submit_channel" onsubmit = "return false">
Я получаю тот же ответ