jQuery Ajax load и getScript
Вопрос
Я пытаюсь настроить свой сайт таким образом, чтобы контент в основной области загружался через javascript (отображение некоторых страниц занимает некоторое время). Однако при использовании jQuery.load (), jQuery.getScript и jQuery.ajax () я столкнулся с небольшой логической проблемой.
Мне нужно иметь возможность загружать определенные файлы javascript через getScript, чтобы я мог использовать эти функции и т. д. внутри загруженного содержимого.
- index.php - основной отображаемый файл (также содержит #loading).
- js / script.js - файл, содержащий код загрузки.
- js / *. js - несколько файлов javascript, которые мне нужно использовать внутри #maincontent после загрузки.
- load.php - файл, загружаемый в #maincontent
script.js:
родовое словоКак видите, я сначала пытаюсь загрузить load.php без каких-либо параметров URL и какого-либо взаимодействия с пользователем. Хотя load.php каждый раз загружается правильно, этого нельзя сказать о коде javascript. Иногда это работает, иногда мне нужно обновить страницу несколько раз, прежде чем я получу чистую консоль (без ошибок).
Ошибки в консоли подсказывают мне, что код js не загружается должным образом до того, как он будет использован внутри load.php. Это особенно верно, если load.php занимает некоторое время (проверено с помощью функции PHP sleep (5)).
Дайте мне знать, если мне нужно что-то уточнить :)
Решение
Не стоит загружать все эти скрипты с помощью getScript.Вам будут нужны некоторые (или все?) Из них каждый раз, так почему бы просто не включить их на страницу.Кроме того, поскольку вы используете jquery для загрузки jquery, я скажу, что вы уже включили его на страницу.Так что не пытайтесь загрузить его снова.
Другие советы
Если проблема заключается в сроках загрузки, вам следует рассмотреть возможность использования последней версии jQuery с отложенным поведением.
Вы можете, например, сделать:
родовое словоЭто будет ждать, пока все вызовы getScript не вернутся, а затем выполнить вызов ajax для load.php (или он вызовет handleErrorsFunction (), если один из вышеперечисленных отказов).