Flash-сообщение всплывающее без перенаправления - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь найти способ заставить всплывающие сообщения Flask всплывать без необходимости перенаправлять страницу. В основном, если вы введете какой-нибудь подходящий мнемонический шаблон, он будет искать в базе данных и отображать ее в виде предупреждения под строкой поиска.

Я попытался полностью удалить перенаправление, но это делает его неработоспособным.

JavaScript, который приводит пользователя к URL:

function search() {
  var searchString = $("#inputSearch").val();

if (searchString.length == 4 && searchString.match(mnemonicPattern)) {
  $.get("search/" + searchString, function () {
    goToURL("search/"+searchString);
    labCatalog.search(searchString, true, false).draw();
  });
}
else if (searchString.length >= 6 && searchString.match(oracleNumberPattern)) {
  $.get("search/" + searchString, function (data) {
    goToURL("search/"+searchString);
    labCatalog.search(searchString, true, false).draw();
  });
}
else {
  labCatalog.search(searchString).draw();
}

}

Функция поиска, которая извлекает данные из базы данных:

@app.route('/search/<string:id_data>',methods=['GET'])
def search(id_data):
        cur = mysql.connection.cursor()
        cur.execute("SELECT * FROM sims WHERE mnemonic=%s", [id_data])
        result = cur.fetchall()
        cur.close()
        for match in result:
                message = "Mnemonic: " + str([match[0]]) + ' Description: 
               + str([match[1]]) + ' RFT Date: ' + str([match[2]])
                flash(message)      
        return redirect(url_for('Index'))

Я просто хочу, чтобы всплывающее сообщение всплыло без необходимости перенаправления с помощью localhost / search / mnemonicpattern.

1 Ответ

1 голос
/ 22 мая 2019

Вам нужно два изменения - одно на стороне клиента, чтобы отобразить окно предупреждения, и одно на стороне сервера, чтобы вернуть данные.

1) На стороне клиента изменить

goToURL("search/"+searchString);

до

alert(data)

2) При изменении на стороне сервера

message = "Mnemonic: " + str([match[0]]) + ' Description: 
           + str([match[1]]) + ' RFT Date: ' + str([match[2]])
            flash(message)      
    return redirect(url_for('Index'))

до

message = "Mnemonic: " + str([match[0]]) + ' Description: '
           + str([match[1]]) + ' RFT Date: ' + str([match[2]])    
    return message

Если в результате более одного совпадения, вышеуказанные изменения отправят ТОЛЬКО последнее совпадение. Возможно, вам придется использовать «message + =» вместо «message =», если вы хотите объединить все совпадения в одну строку для отправки клиенту для отображения в предупреждении

...