jQuery.cookies не будут загружаться динамически (с помощью jQuery getScript и т.д.)

StackOverflow https://stackoverflow.com/questions/8880118

Вопрос

Я пытаюсь создать метод удаления сеанса для файлов cookie при выходе из системы.

Файлы cookie с определенным ключом запуска необходимо удалить, поэтому я создал небольшой javascript, который работает.

Пытаясь сохранить весь мой код выхода из системы в одном месте, я пытаюсь динамически добавлять 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, который вызывается при загрузке страницы выхода, а затем перенаправляется обратно на login .

При ручной вставке на страницу и физическом кодировании вставленных JS-файлов это работает нормально.

Однако при динамической вставке $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); работает некорректно.

Проблема в том, что jquery_cookies_min.js файл НЕ загружается при выполнении обратного вызова deleteCookies запускается, поэтому я получаю сообщение об ошибке консоли cannot call method 'filter' of undefined.

Если я изменю скрипт, загруженный getScript к другому скрипту, например, другой копии jQuery, затем он загружается (я вижу Chrome Network консоль дважды отображает jQuery laoded), но она не загрузит этот файл Cookies.

Я миллион раз проверял и перепроверял правильность местоположения...и действительно, это работает, если я вручную включу JS-файл...Я также пробовал без предыдущего /

Почему этот скрипт не загружается?!

Редактировать:Я также попробовал использовать метод элемента appendChild в соответствии с тем способом, которым я загружаю jQuery...тот же результат

Это было полезно?

Решение

Потому что ваш второй параметр - это функция позвонить, а не определение функции или ссылка.

Попробуйте удалить () из deleteCookies() или используйте:

$.getScript('/path', function () { deleteCookies() });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top