Oracle Linux Serverリリース6.6で開発していますが、最近私のWebサーバー用にApache 2.4に切り替えました。 FlaskのWebサービスを開発しているので、FlaskのローカルWSGIサーバーを使用してすべてのデバッグを行っていました。JQueryを使用してFlaskからJSONを取得する場合はnullを返す場合があります
アプリケーションでは、フォームがあり、送信ボタンをクリックすると、FlaskバックエンドへのJQuery $ .getJSON()コールが行われます。その後、バックエンドでJSONデータを返し、ユーザーに警告します。問題は、ほとんどの場合nullを返し、データを返さないということです。それ以外の時間は私のデータを返し、すべてが問題ありません。これは、私がローカルのWSGIサーバーを使用していたときに完全に機能しました。かつて私はこのエラーが起こったときにApacheに移行していたので、Apacheからの問題だと思っていました。
また、戻る前に私のjsonデータを印刷していますので、nullデータを返さないことを確認していますが、まだこのエラーが発生します。
私の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)
EDIT:
だから私は掘るの一週間後などの問題を修正しました。私のリクエストがキャンセルされてからウェブページに戻るように見えます。だから私はJavaScript関数でe.preventDefault()をしていました。
はので、私のhtmlで私は<form onsubmit="restoreDB(event)">
に変更し、私はJavaScriptで私は今、Webページがリロードされません。この
function restoreDB(e) {
e.preventDefault();
を追加し、それが応答を待つのに十分な時間を持っています。おそらく最高の修正ではありませんが、私はそれを修正したばかりです。誰かが何か良いことを勧めたら、それはすばらしいことになるでしょう。
あなたの質問への回答として修正を投稿してください。 –