JavaScript не вызывается - PullRequest
       10

JavaScript не вызывается

0 голосов
/ 03 марта 2009

У меня есть следующие функции javascript, которые в автономном файле будут правильно вызываться со страницы.

function deleteItem(layer, url) {
    var xmlHttp=GetXmlHttpObject();
    if(xmlHttp==null) {
        alert("Your browser is not supported?");
    }
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
            if(xmlHttp.responseText == 'result=true') {
                var row = document.getElementById(layer);
                row.parentNode.removeChild(row);
            }
            document.getElementById(layer).innerHTML=xmlHttp.responseText;
        } else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
            document.getElementById(layer).innerHTML="loading";
        }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}
function deleteRec(layer, pk) {
    url = "get_records.php?cmd=deleterec&pk="+pk+"&sid="+Math.random();
    if (confirm("Confirm Delete?")) {
        deleteItem(layer, url);
    }
}
function GetXmlHttpObject() {
    var xmlHttp=null;
    try {
        xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
        try {
            xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
        }
    }
    return xmlHttp;
}

Это называется так:

 echo '<td><a href="#" onclick="deleteRec(\'article_' . $pk .'\', \'' . $pk . '\')">DELETE</a></td>' . "\n"; 

Отображает диалоговое окно подтверждения и удаляет страницу при нажатии OK, как и должно.

Тем не менее.

Когда мои другие необходимые функции помещаются в файл js, ничего не происходит.

function update(layer, url) {
    var xmlHttp=GetXmlHttpObject();
    if(xmlHttp==null) {
        alert("Your browser is not supported?");
    }
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
            document.getElementById(layer).innerHTML=xmlHttp.responseText;
        } else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
            document.getElementById(layer).innerHTML="loading";
        }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}
function updateByPk(layer, pk) {
    url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random();
    update(layer, url);
}
function updateByQuery(layer, query) {
    url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random();
    update(layer, url);
}
function updateByPage(layer, query, pg) {
    url = "get_records.php?cmd=GetRecordSet&query="+query+"&pg="+pg+"&sid="+Math.random();
    update(layer, url);
}
function deleteItem(layer, url) {
    var xmlHttp=GetXmlHttpObject();
    if(xmlHttp==null) {
        alert("Your browser is not supported?");
    }
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
            if(xmlHttp.responseText == 'result=true') {
                var row = document.getElementById(layer);
                row.parentNode.removeChild(row);
            }
            document.getElementById(layer).innerHTML=xmlHttp.responseText;
        } else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
            document.getElementById(layer).innerHTML="loading";
        }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}
function deleteRec(layer, pk) {
    url = "get_records.php?cmd=deleterec&pk="+pk+"&sid="+Math.random();
    if (confirm("Confirm Delete?")) {
        deleteItem(layer, url);
    }
}
function GetXmlHttpObject() {
    var xmlHttp=null;
    try {
        xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
        try {
            xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");

        }
        catch (e) {
        }
    }
    return xmlHttp;
}
function makewindows(html) {
    child1 = window.open ("about:blank");
    child1.document.write(html);
    child1.document.close();
}

Кажется, в самом JavaScript нет ничего плохого, поэтому мне интересно, что-то отменяется. Даже при изменении deleterec () на простое предупреждение ничего не происходит.

Ответы [ 4 ]

1 голос
/ 03 марта 2009

Интересно, если в вашем коде JS обнаружена ошибка? Если в вашем Javascript есть синтаксическая ошибка, браузер, вероятно, просто не запустит ничего из этого. Если вы используете отладчик, такой как Firebug, это поможет вам отследить ошибку.

В качестве альтернативы, попробуйте добавить одну функцию за раз, которая скажет вам, какая из них ломает.

0 голосов
/ 03 марта 2009

Сначала в этом текстовом блоке:

        if(xmlHttp.responseText == 'result=true') {
                // Here you remove the appropriate element from the DOM rather than trying to update something within the DOM
                var row = document.getElementById(layer);
                row.parentNode.removeChild(row);
        }
        document.getElementById(layer).innerHTML=xmlHttp.responseText;

Вы на самом деле не хотите эту строку:

document.getElementById(layer).innerHTML=xmlHttp.responseText;

Кроме того, попробуйте сначала поместить функцию deleteRec перед функцией deleteItem в списке функций.

Я бы также порекомендовал вам проверить это в Firefox с Firebug . Это покажет вам любые ошибки Javascript, которые происходят на странице.

0 голосов
/ 03 марта 2009

Попробуйте использовать FireBug, чтобы следовать коду, который работает.
Также, если у вас есть полная страница для показа, это может немного очистить.

0 голосов
/ 03 марта 2009

возможно, HTML-тег, который вы используете для включения файла js на свою страницу, неверен

правильный способ включить скрипт -

<script type="text/css" src="myfile.js"></script>

следующее не работает

<script type="text/css" src="myfile.js" />

Я также рекомендую вам использовать Консоль ошибок Firefox, которая является хорошим приложением, которое сообщит вам, если возникнут какие-либо проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...