Я сделал этот метод для загрузки функций JavaScript динамически. Он включает файл .js
, но когда я вызываю метод, метод говорит, что он не определен. Следующие два файла .js
: ajax_object.js
и user_manager.js
.Ajax Javascript метод не может быть вызван
Предупреждение вне функции считывается и работает, но предупреждения внутри нет.
enter code here
//ajax_object.js
//Load a javascript library
function loadJavascript(src, url){
XMLHttpRequestObject=getXmlHttpRequestObject();
if(XMLHttpRequestObject){
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4){
if (XMLHttpRequestObject.status == 200 || XMLHttpRequestObject.status == 304) {
includeJavaScript(src, url, XMLHttpRequestObject.responseText);
}
}
}
}
XMLHttpRequestObject.open('GET', url, true);
XMLHttpRequestObject.send(null);
}//end LoadJavaScript
//Add Library to header
function includeJavaScript(src, fileUrl, xmlObject) {
if ((xmlObject != null) && (!document.getElementById(src))){
var documentHead = document.getElementsByTagName('HEAD').item(0);
var includeScript = document.createElement("script");
includeScript.language = "javascript";
includeScript.type = "text/javascript";
//includeScript.id = src;
includeScript.src=fileUrl.concat(src);
includeScript.defer = true;
includeScript.text = xmlObject;
documentHead.appendChild(includeScript);
}
}
//user_manager.js
//First alert is read
alert("Outside User Manager");
function selectUserManagerModuleType(){
XMLHttpRequestObject=getXmlHttpRequestObject();
//This doesn't work
//throws selectUserManagerModuleType undefined
alert("Inside The User Manager");
}
Можете ли вы подтвердить, например, используя вкладку 'net' в Firebug, чтобы скрипт (ы) действительно загрузился? –
Используя сеть, я получаю это: GET user_manager.js 304 Модифицированный Firebug также показывает это: На вкладке «Ответ» появляется скрипт: alert («Внешний менеджер пользователя»); function selectUserManagerModuleType() { \t XMLHttpRequestObject = getXmlHttpRequestObject(); \t // Это не работает \t alert («Внутри Менеджера пользователей»); \t } И если это делает никакой разницы, то скрипт вызывается с помощью PHP после того, как он будет загружен: эхо "<сценарий языка = \" JavaScript \ "> selectUserManagerModuleType();"; –
user293313
Интересно, что произойдет, если вы назначили функцию переменной и вызвали ее таким образом ... –