繁体   English   中英

通过提交表单来保存数据,而无需刷新/重定向当前页面python

[英]Save data by submiting a form without refreshing/redirecting of the current page python

有谁能够帮助我 ?? 我想找到一种无需使用Python和jQuery完全刷新当前页面即可提交表单的方法。 在同一页面中,我有两种形式。我使用WTForms创建了一种形式。 问题是如何在不刷新页面的情况下将数据保存在第一个表单上,这意味着字段不应为空。 我尝试使用下面的代码,但它保存第一种形式的数据,但返回空字段。

$('#target').click(function() {
    $('#return').html("Patient is registered")

 });

  $('#target').click(function(){                      
      $('#forma_patient').submit();
  });

第一种形式是这样的:

<form action=" {{ url_for('malingnant_disease.save_patient') }}" method="post" id="patient_form" class="form-horizontal patient">
        <div>
          <div>
            <div class="form-group">
                {{ form.name.label(class_="control-label col-xs-4") }}
                <div class="col-xs-4">
                  {{ form.name(class_="form-control") }}
                </div>
              </div>
             <div class="form-group">
                {{form.surname.label(class_="control-label col-xs-4") }}
                <div class="col-xs-4">
                  {{ form.surname(class_="form-control") }}
                </div>
              </div>
              <div class="form-group">
                {{ form.id.label(class_="control-label col-xs-4") }}
                <div class="col-xs-4">
                  {{ form.id(class_="form-control") }}
                </div>
              </div>
              </div>
              <br />
              <div id="return_answer" \>
              <br/>
              <div align="center">
                <button type="submit" id="target" class="btn btn-primary">Save Patient</button>

第二个定义了一些字段...

<form action=" {{ url_for('malingnant_disease.save_diagnosis') }}" method="post" id="diagnosis_form" class="form-horizontal diagnosis">
            <div>
              <div>
                  <!-- some fields  ....-->
               </div> 
                  <div align="center">
                    <button type="submit" class="btn btn-primary">Save diagnosis</button>

在视图页面上,我有定义保存这些数据的路线:

@mod_malignant_disease.route('/save', methods=['POST','GET'])
def save_patient():
    malignant_disease = MalignantDiseaseForm(request.form)
    malingnant_disease_data = malignant_disease.data
    doc_id = utils.get_doc_id() 

    json_obj = {}
    json_obj = {
        'patient': {
            'name': malingnant_disease_data['name'],
            'surname': malingnant_disease_data['surname'],
            'id': malingnant_disease_data['id'] 
            }
            };
    mongo.db.malignantdisease.update(
        {'_id': doc_id},
        {'$set': json_obj},
        True
    )
    return redirect(url_for('malingnant_disease.malingnant_disease_page'))

您将需要使用ajax发送帖子而无需重新加载页面。 您可以使用jquery的帖子并为此序列化助手。 代替$('#forma_patient').submit(); 使用类似:

$.post( "/save", $('#patient_form').serialize(), function() {
    alert( "success" );
});

您需要使用Ajax。 例如简单的代码。 检查用户名和密码未刷新页面并获取主干结果并查看当前页面。

javascriptt

var EXAMPLES = {};

EXAMPLES.checkUsernamePasswordAjax = function (usernameid, passwordid, idresultlabel) {

    var xhr = new XMLHttpRequest();
    var username = document.getElementById(usernameid);
    var password = document.getElementById(passwordid);
    var result_label = document.getElementById(idresultlabel);
    if (username && password) {
        xhr.open('get', '/checker?username=' + username.value + "&password=" + password.value, true);
        xhr.send(null);
        xhr.onreadystatechange = function () {
            if ((xhr.readyState == 4) && (xhr.status == 200)) {
                var result = JSON.parse(xhr.responseText);
                result_label.innerHTML = result.answer;
            }
        };
    }
};

index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="{{ url_for('static', filename="js/exampleJS.js") }}" type="text/javascript"></script>
</head>
<body>
<form method="post" action="#" onchange="EXAMPLES.checkUsernamePasswordAjax('iduser', 'idpass');">
    Username: {{ form.username(id="iduser") }} <br/>
    Password: {{ form.password(id="idpass") }}
    <hr/>
    <strong>Result validation: </strong> <label id="idresult"></label>
{#    <input type="submit" value="Check"/>#}
</form>

python /烧瓶

@app.route('/checker/', methods=['get'])
@app.route('/checker/<username>', methods=['get'])
def login(username=None):    
    username, password = request.args['username'], request.args['password']    
    if username == "hacker" and password == "hacked":        
        return redirect(url_for('.hacker_page'))
    return jsonify({'answer': 'False'})


@app.route('/hacked')
def hacker_page():
    return jsonify({"answer": "<strong> <h2> hacked page </h2> </strong>"})


@app.route('/')
def root(api=None):
    form = SimpleForm(request.form)
    return render_template('index.html', form=form)

享受,老兄:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM