0

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 />

これを回避する最善の方法は何ですか?

4

1 に答える 1

0

deferred.done は動作しませんか? 次に、コールバックdeferred.doneでサーバー側コードを呼び出すだけです。

于 2013-10-09T20:15:49.617 に答える