0

OK、これが私が持っているものです。ボタンをクリックすると、ajaxrequest.open()を使用してテキストフィールドがphpスクリプトに送信されるこの投票システムがあります。データをphpスクリプトに送信した後、新しいページをロードします。これが私が持っているものです(要約版)

var mytext = document.getElementById('textfield').value;
ajaxRequest.open("GET", "vote.php?mytext="+mytext, true);
ajaxRequest.send(null); 
window.location.href = "thanksforvoting.htm";

したがって、テキストフィールドをvote.phpに送信します。これは、window.location.href行を削除した場合にのみ機能します。その行が入っている限り、ajaxrequestは実行されません。別のページを読み込んでいるため、キャンセルされている可能性があります。

phpの「header」コマンドを使用できるかもしれないと思いましたが、うまくいかないようです。それは私をそのページに連れて行っていない。上記のスクリプトはページに移動しますが、phpスクリプトには到達しません。window.location.hrefを取り出すと、phpスクリプトは実行されますが、明らかにページに移動しません。

4

1 に答える 1

1

ajax リクエストは非同期で行われるため、コールバックを使用する必要があります。そうしないと、リクエストが完了する前にリダイレクトが発生します。あなたの場合、それは次のようになります:

var mytext = document.getElementById('textfield').value;
ajaxRequest.onreadystatechange = callback;
ajaxRequest.open("GET", "vote.php?mytext=" + encodeURIComponent(mytext), true);
ajaxRequest.send(null); 

function callback() {
   if (ajaxRequest.readyState === 4 && ajaxRequest.status === 200) {
      window.location.href = "thanksforvoting.htm";
   }
}

MDN には、Ajax に関する優れた入門ガイドがあります。

于 2013-03-19T07:47:06.687 に答える