任何人都可以帮助我? 我想找到一种方法来提交表单而不使用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'))
答案 0 :(得分:0)
您需要使用ajax发送帖子而不重新加载页面。您可以使用jquery的post和serialize帮助程序。而不是$('#forma_patient').submit();
使用类似的东西:
$.post( "/save", $('#patient_form').serialize(), function() {
alert( "success" );
});
答案 1 :(得分:0)
你需要使用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>
蟒/烧瓶
@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)
享受,伙计:)