因此,我正在開發Oracle Linux Server 6.6版,並且最近我切換到了Apache 2.4以供我的Web服務器使用。我正在開發一個Flask Web服務,所以我使用Flask的本地WSGI服務器來執行我所有的調試。使用JQuery從Flask獲取JSON有時會返回null
在應用程序中,我有一個表單,當您單擊提交按鈕時,它會對我的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();
現在網頁不刷新,它有足夠的時間來等待響應。可能不是最好的解決方法,但我很高興我修好了。如果有人推薦什麼更好,那將是很好的
請張貼您的修復作爲您的問題的答案,並接受你自己的答案,這樣人們知道這個問題已經回答 –