JSONify возвращает странные значения - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь вернуть результат функции из Python обратно в мой javascript через AJAX.В настоящее время я получаю Этот ответ , в то время как я ожидаю "True" или "False"

jquery:

  var test = $.getJSON("/chk_chn", {
    name: channel_name
  });

  alert(test.toSource())

python:

@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)

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Вам не хватает функции обратного вызова и просто распечатываете объект запроса.

Попробуйте это:

$.getJSON('/chk_chn', { name: channel_name })
    .done(function (data) {
        console.log(data);
    });
0 голосов
/ 13 октября 2018

У меня было несколько проблем.

Во-первых, мой Ajax-запрос не имел функции обратного вызова.Спасибо Rawri за указание на это.Код теперь следующий:

      $.getJSON("/chk_chn", { name: channel_name} )
  .done(function( json ) {
    console.log(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.log("Request Failed: " + err);
  });

Моя вторая и еще более глупая проблема заключалась в том, что запрос Ajax вызывался кнопкой, существовавшей в модале.Когда кнопка была нажата, модальное окно было закрыто, и javascript был перегенерирован на новой странице, что полностью отбросило мой запрос.

Я исправляю это, возвращая false в моей форме

<form role="form" id="submit_channel" onsubmit="return false">
0 голосов
/ 10 октября 2018

Вы пробовали:

return jsonify({result: True})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...