-1

これは JavaScript に関する質問ですが、AJAX に関する質問ではありません。投稿が送信されて動いている投稿をキャンセルする方法はありますか?

  • ユーザーが投稿ボタンを押すと、すべて問題なくフォームが送信されます。PHP は詳細を取得する準備ができています。
  • なんらかの理由でネットワークの輻輳が発生し、サーバーが応答しません。
  • 時間が経過したら、ユーザーに再度投稿する機会を与えたいです。

送信された実際の POST をキャンセルする方法はありますか?

サーバー側で、投稿が受信されたことを実際に検出する方法はありますか? (この場合、データはデータベースに保存されます)

ポストプロシージャ全体がサーバー側で始まりと終わりを持っていると想像していますか?

または、投稿がどこにも行かないことを確実に知る方法はありますか? 失敗して終わり?

4

1 に答える 1

3

送信された実際の POST をキャンセルする方法はありますか?

いいえ、サーバーからではありません。クライアントからのみ。リクエストに応答しないことを選択できますが、「途中で」キャンセルすることは、実際に行うべきではない過度に複雑なアクロバットなしではサーバーからは不可能です。

サーバー側で、投稿が受信されたことを実際に検出する方法はありますか?

コードは、リクエストを受信した場合にのみ実行されます。したがって、デフォルトでは、コードが実行されている場合、リクエストが受信されます。PHP が提供する任意のログ メカニズムを使用して、このイベントをログに記録できます。または、Web サーバーのログを確認してください。

ポストプロシージャ全体がサーバー側で始まりと終わりを持っていると想像していますか?

すべてはクライアントから始まり、クライアントで終わります。クライアントがリソースを要求します。クライアントがいない場合、コードは親指をいじってアイドル状態になっています。サーバーは、クライアントからリクエストを受信すると、リクエスト URL をリソースにマップし、クライアントにレスポンスを返す必要があります。

すべての Web リクエストは、これとまったく同じ方法で行われます。それらはクライアント側から開始されます。クライアントが応答を受信し、接続が閉じられると、それらはすべて終了します。その後、新しいリクエストのためにサイクル全体が再び開始されます。

投稿がどこにも行かないことを確実に知る方法はありますか。失敗して終わり?

コードが呼び出されなかった場合。次に、サーバー側でエラーが発生しました (おそらく設定ミス)。覚えておくべき重要なことは、クライアントは常に応答を受け取るということです。何が起こったのかを理解するのはあなた次第です。

これを行う最善の方法は、アプリケーションでスマート ロギングを行うことです。または、通常はサーバー ログを監視します (リクエストが追跡される場所)。

投稿が「どこにもない」場合は、対応するログ エントリで通知されます。ログ エントリにエラーが表示されず、予期したアクション (たとえば、データベース レコードが作成された) が発生していない場合は、コードに問題があったことを意味します。

リクエストが成功した場合にのみレコードが作成されるようにする必要がある場合は、データベースがサポートしている場合 はトランザクションを使用してください。

于 2013-09-01T06:40:43.577 に答える