Получает ли .load () Javascript? - PullRequest
       1

Получает ли .load () Javascript?

1 голос
/ 14 января 2020

Итак, у меня есть div с Javascript (и PHP) в нем:

<div id="getItems">
<script>
    sessionStorage.setItem('numItems', <?php echo $_SESSION['NumItems'];?>);
</script>
</div>

Я хотел бы выборочно перезагрузить этот div, чтобы получить самое текущее значение numItems.

Что-то вроде:

$( "#getItems" ).load( window.location + " #getItems" );
var numItems = sessionStorage.getItem('numItems');

Будет ли метод .load () получать и запускать Javascript внутри div?

Или .load () только передает html в div?

Ответы [ 2 ]

2 голосов
/ 14 января 2020

Если параметр, переданный в .load, не содержит селектора в конце, тогда да, скрипты внутри будут выполняться.

Но так как вы вызвали .load со селектором, любые скрипты внутри не будет запущен. См. jQuery документацию :

Выполнение сценария

При вызове .load() с использованием URL-адреса без суффиксного выражения селектора содержимое передается .html() до удаления сценариев. Это выполняет блоки скрипта до того, как они будут отброшены. Если .load() вызывается с выражением селектора, добавленным к URL, однако сценарии удаляются до обновления DOM и, следовательно, не выполняются. Пример обоих случаев можно увидеть ниже :

Здесь все JavaScript, загруженные в #a как часть документа, будут успешно выполнены.

$( "#a" ).load( "article.html" );

Однако в следующем случае блоки скриптов в загружаемом документе в #b извлекаются и не выполняются:

$( "#b" ).load( "article.html #target" );

Ваш случай второй, поэтому встроенные <script> s будут удалены и не будут запущены.

Если вы хотите обновить значение для NumItems на клиенте, не используйте .load - вместо этого сделайте сетевой запрос к сценарию PHP, который только echos $_SESSION['NumItems'], и установите ответ на sessionStorage предмет.

0 голосов
/ 14 января 2020

Метод .load () загружает только следующие данные:

url Тип: String Строка, содержащая URL-адрес, на который отправляется запрос. Тип данных: PlainObject или String Простой объект или строка, отправляемая на сервер с запросом. complete Тип: Function (String responseText, String textStatus, jqXHR jqXHR) Функция обратного вызова, которая выполняется после завершения запроса.

Мне кажется, что вы можете передать путь к файлу в качестве аргумента к методу и любые javascript logi c в этом файле будут выполняться.

Однако;

Здесь все JavaScript, загруженные в #a как часть документа, будут успешно выполнены.

$( "#a" ).load( "article.html" );

Однако в следующем случае блоки скриптов в документе, загружаемом в #b, удаляются и не выполняются:

$( "#b" ).load( "article.html #target" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...