2012-01-16 5 views
0

ログアウト時にCookieのセッション削除メソッドを作成しようとしています。jQuery.cookiesは動的にロードされません(jQuery getScriptなど)

特定の開始キーを持つクッキーを削除する必要があります。そのため、私は少し機能するjavascriptを作成しました。

すべてのログアウトコードを1か所に保存しようとしていますが、私はJavascriptを動的に追加しようとしています。後ろに私のコードで

、私は次のことをやっている:

Dim logoutJS As String = "" 
    logoutJS += "function loadJQuery(callback) { " 
    logoutJS += "var addJquery = document.createElement('script'); " '// add jQuery to document 
    logoutJS += "addJquery.onload = callback; " 
    logoutJS += "addJquery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'; " 
    logoutJS += "document.getElementsByTagName('head')[0].appendChild(addJquery); " 
    logoutJS += " }; " 
    logoutJS += "function loadCookies() { " '// now jQuery is loaded we can used getScript 
    logoutJS += "$.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); " 
    logoutJS += " };" 
    logoutJS += "function deleteCookies() { " 
    logoutJS += "var cookieSettings = $.cookies.filter(/^hgAdmin/); " 
    logoutJS += "$.each(cookieSettings, function (cookieName, content) { " 
    logoutJS += "$.cookies.del(cookieName); });  " 
    logoutJS += "window.location = ('/login.aspx'); };" 
    logoutJS += "loadJQuery(function() { loadCookies(); }); " 

    Common.logOut(Session) 
    ScriptManager.RegisterStartupScript(form1, GetType(HtmlGenericControl), "form1", logoutJS, True) 

明らかlogoutJSが、これはその後、ログインするために戻ってリダイレクトし、ログアウトページがロードと呼ばれるJavaScriptです。

手動でページに挿入し、挿入されたJSファイルを物理的にコーディングすると、正常に動作します。

ただし、動的に挿入すると、$.getScript('/Scripts/jquery_cookies_min.js', deleteCookies());は正しく機能しません。

deleteCookiesを実行するコールバックが起きたときにjquery_cookies_min.jsファイルがロードされないため、コンソールエラーcannot call method 'filter' of undefinedが発生するという問題があります。

getScriptで読み込まれたスクリプトを別のスクリプト、たとえばjQueryの別のコピーに変更した場合、ChromeのNetworkコンソールにjQueryが2回ラップされたことが表示されますが、このクッキーファイルは読み込まれません。

私がチェックしているとダブルが...場所が正しいことを百万回をチェックして、私は手動でJSファイルを含める場合は確かに、それが動作...私はまた、前/

なぜずに試してみましたこのスクリプトはロードされていませんか?

編集:私はまた、私はjQueryのをロードしていた方法に従ってのappendChild要素法を試してみました...同じ結果

答えて

0

2番目のparamは機能呼び出し、ない関数定義であるかので参照。

$.getScript('/path', function() { deleteCookies() }); 
+0

完璧:

はdeleteCookies()または使用から()を削除してください!ありがとう –

関連する問題