2017-03-22 24 views
0

これは実際には非常にイライラしています。ページを残さずにデータを送信できるようにフォームを非表示のiFrameに送信する方法を使用しました。フォームが送信しないこともあります。これはすべてのネットワークロケーションから発生し、一見ランダムです。AJAXフォームが送信されず、エラーコードがありません

フォームを送信するAJAXメソッドを使用するようにコードを変更しましたが、まったく同じことが起こっています。フォームの後にフォームを送信することができます。

コードは非常に単純です。正常にアップロードするにはすべてのステータスが報告されますが、間違っても何も記録されません。私はまた、フォームの宛先ページに電子メール通知を入れました。これは、問題が発生したときに送信されません。だから私はそれが間違ってページが全く呼ばれていないことを知っている。

AJAXリクエストからのフィードバックはありませんが、これは非常に難しいですが、タイマーを使用する唯一のソリューションは接続のチェックを続けていることですか?

+0

サーバーの接続が不安定な場合もあります。デベロッパーツール(ほとんどの場合はF12)の[ネットワーク]タブでajaxリクエストを確認し、送信されているかどうかを確認してください。 「ランダムに動作することがあり、時には動作しない」のようなものは、プログラミングには存在しません。 – Xatenev

+0

なぜそれが機能していないのかわからないので、そのための「最良の」解決策を知る方法はありません。 'onreadystatechange'が例えば30秒で起動しない場合に再び試みるように、別のタイムアウト機能を作成することができます。あなたは空想を得たい場合は、「指数バックオフ」(検索)のようなものを使用することもできます。 –

答えて

1

onreadystatechangeの前には、sendの前に入力する必要があります。それ以外の場合は、ハンドラが定義される前にreadystateが変更される可能性があるため、イベントは検出されません。成功したsendは、少なくとも非同期で完了するのに少し時間がかかる可能性がありますが、ローカルで失敗するsendが同期して失敗する可能性があるため、エラーは表示されません。

+0

これは4の状態を示していますが、ステータスは0です.4になる前に他の状態は記録されていません。良好なリクエストは2と3の状態もリストしています。 – Guesser

+0

あなたの隠れたiframe技術もランダムに失敗したのと同じように、あなたのXHR技術はランダムに失敗します。一致? *私はそう思っていません!* 次の簡単なことを試してください: 'send'はネットワークトラフィックなしで即座に失敗しますか、接続を試みた後に失敗しますか? Fiddlerを使用してネットワーク上の状況を確認してみてください。瞬時に障害が発生すると、トラフィックは発生しません。後で失敗すると、RequestとResponseには大量の有用な情報が表示されます。すべての失敗*は、ネットワークトラフィックをプロキシとしてマッサージすることで問題を「修正」したことを意味します。 –

+0

さて、ネットワークの問題だと思っています。それはあまりにも頻繁に起きることがちょっと奇妙です.AJAXリクエストは自動的に再試行されませんか?私はアップロードしてフォームが失敗した場合はそれを再送信する場合は、状況を確認するタイマーを入れている、それは問題を解決したようだ。 – Guesser

関連する問題