所以我正在开发oracle Linux Server 6.6版本,最近我转而使用Apache 2.4作为我的Web服务器。我正在开发Flask Web服务,所以我使用Flask的本地WSGI服务器来完成所有调试。
在应用程序中,我有一个表单,当您单击提交按钮时,它会对我的Flask后端执行JQuery $ .getJSON()调用。然后在后端,我返回JSON数据并提醒用户数据。问题是大部分时间它返回null并且不返回我的数据。其他时候它返回我的数据,一切都很好。当我使用本地WSGI服务器时,这非常有效。当我发生错误时,我曾经迁移到Apache,所以我认为这个问题来自Apache。
此外,我在返回之前打印出我的json数据,所以我确定它不会返回空数据,但我仍然会收到此错误。
我的HTML / JavaScript代码
<div id="restore_submit" class="restore_submit" style="display:none;">
<form onsubmit="restoreDB()">
Type the database ID and Snapshot ID of the database you want to restore
<br><br>
RDS ID:<br>
<input type="text" id="DbName2" name="DbName">
<br>
Snapshot ID:<br>
<input type="text" id="snapshot_id" name="snapshot_id">
<br><br>
<input type="submit" value="Restore">
</form>
</div>
function restoreDB() {
var DbName = document.getElementById('DbName2').value;
var snapshot_ID = document.getElementById('snapshot_id').value;
var check = confirm('Are you sure you want to restore ' + DbName);
if(check){
$.getJSON('/restore_rds', {
Dbname: DbName,
snapshot_id: snapshot_ID
}, function(data) {
if(data){
if(data && data.error){
alert(DbName + " is being restored using this snapshot_id " + snapshot_ID);
}
else{
alert(data.error);
}
}
else{
alert("returned null");
alert(data);
}
});
}
}
我的Python代码
#This is for the restore script
@app.route('/restore_rds')
#@login_required
def restore_rds():
DbName = request.args.get('Dbname')
snapshot_id = request.args.get('snapshot_id')
error = rds_action.restore_db(DbName, snapshot_id, rds)
if error:
error = str(error)
else:
error = 'empty'
print error
print jsonify(error = error)
return jsonify(error = error)
编辑:
所以我在经过一周的挖掘之后解决了这个问题。看起来我的请求在返回网页之前被取消了。所以我所做的是我的JavaScript函数中的e.preventDefault()。
所以在我的HTML中我将其改为
<form onsubmit="restoreDB(event)">
在我的JavaScript中我添加了这个
function restoreDB(e) {
e.preventDefault();
现在网页没有重新加载,并且有足够的时间等待响应。可能不是最好的修复,但我很高兴我修复它。如果有人推荐更好的东西,那就太棒了
答案 0 :(得分:0)
所以我在经过一周的挖掘之后解决了这个问题。看起来我的请求在返回网页之前被取消了。所以我所做的是我的JavaScript函数中的e.preventDefault()。
所以在我的HTML中我将其改为
<form onsubmit="restoreDB(event)">
在我的JavaScript中我添加了这个
function restoreDB(e) {
e.preventDefault();
现在网页没有重新加载,它有足够的时间等待响应。可能不是最好的修复,但我很高兴我修复它。如果有人推荐更好的东西,那就太棒了