Javascript не загружается, нет явной ошибки

У меня есть следующий код, который не будет работать. JavaScript не дает ошибок и, кажется, загружается нормально. но нажатие на ссылку ничего не даст. Пример ссылки:

<a href="#" onclick="updateByQuery('Layer3', "Ed Hardy");">Link 1</a><li>Link 2</li>

и код:

var xmlHttp
var layername
var url
function update(layer, url) {
    var xmlHttp=GetXmlHttpObject(); //you have this defined elsewhere

    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";
        }

       //etc
    }

    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 GetXmlHttpObject()
{
    var xmlHttp=null;
    try
    {
        xmlHttp=new XMLHttpRequest();
    }catch (e)
    {

        try
        {
                xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e) {}

    }
return xmlHttp;
}
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write(<?php echo htmlspecialchars(json_encode($row2["ARTICLE_DESC"]), ENT_QUOTES); ?>);
child1.document.close(); 
}
12.12.2008 16:41:35
Нет ошибки? Вы пробовали с Firefox? Или любой другой браузер? Это может быть связано с кавычками в значениях в onclick. Или может быть синтаксическая ошибка в javascript, которая мешает браузеру обработать скрипт, однако браузер должен выдать ошибку за это.
Espen 12.12.2008 17:05:23
У меня есть доступ только к Internet Explorer, так как это внутренняя сеть, я не могу использовать другой браузер
user1253538 12.12.2008 17:09:05
3 ОТВЕТА
РЕШЕНИЕ

Возможно, это связано с двойными кавычками в окружении «Эд Харди». Это работает:

<a href="#" onclick="updateByQuery('Layer3', 'Ed Hardy');">Link 1</a><li>Link 2</li>
3
12.12.2008 16:45:52
я не знаю, почему есть двойные символы. В PHP я использую следующую строку: echo '<a href="#" onclick="updateByQuery(\'Layer3\','. Json_encode($query).');"> Ссылка 1 </a> «;
user1253538 12.12.2008 16:50:28

Из замечательного JSLint

Вы пропустили точку с запятой после этих

var xmlHttp
var layername
var url

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";
        }

       //etc
    }

(e) используется 2x, измените второе значение на «ex».

 try
    {
        xmlHttp=new XMLHttpRequest();
    }catch (e)
    {

        try
        {
                xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e) {}

    }

Попробуйте использовать одинарные кавычки для ВСЕ в JS, и использовать двойные кавычки для ВСЕ в PHP.

Получить Firebug, чтобы увидеть, есть ли другие синтаксические ошибки.

0
12.12.2008 16:56:02

Дополнительно эта строка:

child1.document.write(<?php echo htmlspecialchars(json_encode($row2["ARTICLE_DESC"]), ENT_QUOTES); ?>);

Вероятно, должны включать кавычки вокруг ссылки на PHP, поэтому JavaScript знает, что вы хотите написать:

child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");

Обратите внимание, что я также изменил двойные кавычки, окружающие ARTICLE_DESC, на одинарные кавычки.

0
12.12.2008 16:56:57
Я исправил это, но на самом деле ничего не было исправлено. Ссылка все еще содержит двойные кавычки, как указывал аяз.
user1253538 12.12.2008 17:00:52