2008-12-12 9 views
0

J'ai le code suivant, qui ne fonctionnera pas. Le javascript ne donne aucune erreur et semble se charger correctement. mais cliquer sur un lien ne fera rien. Un exemple d'un lien est:javascript ne charge pas, pas d'erreur claire

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

et le code:

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(); 
} 
+0

aucune erreur? Avez-vous essayé avec Firefox? Ou tout autre navigateur? Cela peut être dû aux guillemets dans les valeurs de l'onclick. Ou il pourrait y avoir une erreur de syntaxe dans le javascript qui empêche le navigateur de traiter le script, mais le navigateur devrait donner une erreur pour cela. – Espen

+0

J'ai seulement accès à Internet Explorer car c'est une chose de réseau interne, je ne peux pas utiliser un navigateur différent –

Répondre

3

Il peut probablement en raison des caractères codés sur deux guillemets entourant Ed Hardy. Est-ce que ce travail:

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

Je ne sais pas pourquoi il y a des caractères doubles. La ligne que j'utilise pour produire en PHP est: echo 'Link 1'; –

0

De la magnifique JSLint

Il vous manque des points-virgules après ces

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) est utilisé 2x, changer la seconde à 'ex'.

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

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

    } 

Essayez d'utiliser des guillemets simples pour tout à JS, et utiliser des guillemets doubles pour Everyting en PHP. Obtenez Firebug pour voir s'il y a d'autres erreurs de syntaxe.

+0

Oui, j'ai dit 'EVERYTING' =) – StingyJack

0

De plus, cette ligne:

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

Si probablement inclure des guillemets autour de la référence PHP, JavaScript sait ce que vous voulez écrire:

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

Notez que j'ai changé les guillemets doubles entourant ARTICLE_DESC à guillemets simples aussi bien.

+0

J'ai corrigé ceci, mais rien n'a été corrigé. Le lien contient toujours des guillemets, comme l'a souligné Ayaz. –

Questions connexes