onclick イベントで実行される HowTo という次の関数があります。その中の関数には、JQuery プラグインjquery.cookieが必要です。
function HowTo(){
$largeAmountOfHTML = document.getElementById("element").innerHTML;
$.cookie("nameOfCookie", $largeAmountOfHTML);
$.ajax({
type: "GET",
url: "path/to/serverside/script.php",
async:false,
});
window.location.href='anotherPage.php';
};
この関数は、最初に大量の HTML を取得し、それを変数 $largeAmountOfHTML に割り当てます。次に、 jquery.cookieのライブラリで宣言された JQuery 関数 $.cookie() を使用して、関数は $largeAmountOfHTML の値を Cookie nameOfCookie に保存します。次に、関数は AJAX 呼び出しを行い、Cookie データを取得してコンテンツを MYSQL データベースに保存するサーバーサイド php スクリプトを実行します。関数が完了すると、現在のウィンドウが anotherPage.php に移動します。
この関数は、コンソール エラーが宣言されていない状態でスムーズに実行されます。ただし、$largeAmountOfHTML が特定のサイズに達すると、jquery.cookieは、サーバーサイド スクリプトが Cookie を取得しようとする前に十分な速さで Cookie を割り当てることができません。jquery.cookieには、これを防ぐために使用できるメソッドがリストされていません。
$largeAmountOfHTML が十分に大きくなり、時間内に Cookie に保存できない場合、サーバーサイド スクリプトは次のエラーを宣言します。
<br />
<b>Notice</b>: Undefined index: nameOfCookie in <b>localhost/path/to/serverside/script.php</b> on line <b>4</b><br />
これを回避する最善の方法は何ですか?