2011-04-15 3 views
1

J'ai implémenté une méthode simple JQuery.GetJSON en cliquant sur un tag <img>. Le problème est qu'Internet Explorer lève l'exception que methodname est indéfini.méthode javascript non trouvée 'nom de la méthode' est indéfini

Quelqu'un peut-il me guider à ce sujet.

HTML:

<div class="itemgenerate"> 
    <img src="/images/generate.png" onclick="sendJSONRequest()" style="cursor: pointer;" /> 
</div> 
<div id="divTarget" class="itemtext"> 
    <p id="pStuff"></p> 
</div> 

Java Script:

<script language="javascript" type="text/javascript" src="/Scripts/jquery-1.4.1.js" /> 
<script language="javascript" type="text/javascript"> 
    function sendJSONRequest() { 
     $.getJSON("/Home/Generate", $('#text1').val(), function (data) { 
      $('#pStuff').text(data.Stuff); 
     }); 
    } 
</script> 

S'il vous plaît si quelqu'un peut me expliquer ce qui ne va pas ici:

+0

essai avec 'onclick = "javascript: sendJSONRequest();" Est-ce que' – diEcho

+0

IE dire quelle ligne? –

+0

J'ai essayé de déboguer le javascript et il pointe vers la ligne de la balise '' –

Répondre

4

script balises ne peuvent pas être auto-fermeture. Vous avez besoin d'une fermeture script tag:

<script language="javascript" type="text/javascript" src="/Scripts/jquery-1.4.1.js"></script> 

Votre syntaxe actuelle signifie la première balise de script ne sera pas fermé et son contenu sera traité dans le cadre de la première. Puisque la première balise a un attribut src, son contenu sera ignoré, donc votre fonction ne sera pas définie.

+0

J'ai vu que jquery est chargé. En utilisant ce '

+0

Le problème a été résolu en raison de la réponse mentionnée ci-dessus Bien que le jQuery ait été chargé avec succès au démarrage, vous ne savez pas pourquoi? :( –

+0

@Naveed De [MDC] (https: //developer.mozilla. org/En/HTML/Element/Script): "doit avoir à la fois une balise de début et une balise de fin." Ma réponse est erronée: jQuery se charge, mais pas le contenu de la balise – lonesomeday

1

Ce n'est pas la méthode JQuery pour utiliser onclick= dans le tag; L'un des principaux avantages de l'utilisation de JQuery est de vous permettre de faire abstraction du code du script à partir du balisage HTML. Donc, vous pouvez utiliser quelque chose comme ceci:

$(document).ready() { 
    $('#myimage').click(sendJSONRequest); 
} 
+0

+1 Un excellent point, mais pas le problème ici. – lonesomeday

+0

@lonesomeday - vous avez raison, pas une réponse à la question réelle. C'était trop d'informations pour entrer dans un commentaire, cependant. Cela dit, si le problème se trouve dans la balise '' comme il le dit, alors changer pour utiliser cette technique pourrait résoudre le problème. – Spudley

Questions connexes