-1

1 つのフォームを 2 つの異なる URL に投稿する必要があります。1 つは単なるログ スクリプトであるため、応答をユーザーに返す必要はありません。

残念ながら、この例では、単一の PHP スクリプトに投稿して、向きを変えて Curl を使用して再投稿することはできません。これは、ユーザーのブラウザで行う必要があります。

これは私が現在使用している Javascript の一部ですが、ほとんどすべての主要なブラウザーで一見ランダムな速度で失敗しています (ただし、95% 以上の確率で動作します)。フォームの残りの部分では Javascript が機能する必要があるため、問題は一部のユーザーが Javascript をオフにしているということだけではないことがわかっています。

  function makePOSTRequest(url, parameters) {

  http_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari,...

     http_request = new XMLHttpRequest();

     if (http_request.overrideMimeType) {

        http_request.overrideMimeType('text/html');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }

  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);

}

別の関数でリクエストを手動で作成した後、それを呼び出してから、フォームの submit() 関数を呼び出しています。

誰かがよりうまくいくかもしれない代替案を提案できますか? これは最大 95% の確率で機能しているようですが、その 5% の失敗率は致命的です... ありがとう!

4

1 に答える 1

0

エラーチェックをサポートするフレームワークを使用してみてください。失敗した場合はリクエストを繰り返してください。

jQuery などの JavaScript フレームワークは、投稿リクエストの送信をサポートしており、リクエストが成功したかどうかを確認するために使用できます。また、コードの作成と保守が容易になります。

于 2013-05-17T19:01:02.050 に答える