2016-08-12 7 views
0

Ich habe einen einfachen JavaScript-Code, der eine andere Seite mit AJAX aufruft, um meine Datenbankdatensätze zu aktualisieren. Ich verwende onclick in einem Link, um meine Variable zu übergeben und die Funktion aufzurufen. Im Debug bekomme ich den allgemeinen Fehler "Funktion addFeatured nicht definiert".Javascript-Funktion nicht richtig definiert?

Ich habe viele Beiträge hier auf StackOverflow gelesen und ich stelle fest, dass das häufigste Problem, das ich gefunden habe, ist, dass die Funktion selbst, während sie definiert ist, global nicht zugänglich ist. Ich bin sehr neu in Javascript und verstehe immer noch nicht vollständig, wie ich feststellen kann, ob mein spezielles Skript global ist oder nicht. Ich habe mir andere Scripts aus Slideshows angeschaut und mein einziges Script aus einem Lightbox-Effekt, und was ich habe (scheint mir) zu sein, wie es sein sollte, verwendet meine Lightbox jedoch keinen onclick-Handler.

Es ist auch mein Verständnis, aus dem, was ich bisher gelesen habe, dass die Verwendung von onclick in Markup ist keine gute Praxis. Ist das allgemein wahr? Wenn ja, was wäre der richtige Weg, um das zu erreichen, was ich versuche zu tun? Hier

ist der Codeblock von meiner Seite (genau wie ich in meiner IDE geschrieben haben):

<li><a onclick="addFeatured(<?php echo $r['id']; ?>)"><i class="icon-trash"> </i> Add to Featured</a></li> 
         <script type="text/javasript"> 

function addFeatured(itemId) 
{ 
$.ajax({ 
    'url': 'addFeatured.php', 
    'type': 'GET', 
    'dataType': 'json', 
    'data': {itemid: itemId}, 
    'success': function(data) 
    { 
     if(data.status) 
     { 
      if(data.added) 
      { 
        $("span#success"+itemId).attr("innerHTML","Added Dog to Featured Categories."); 
      } 
      else 
      { 
        $("span#success"+itemId).attr("innerHTML","This item is already on your list"); 
      } 
     } 
    }, 
    'beforeSend': function() 
    { 
      $("span#success"+itemId).attr("innerHTML","Adding Dog to Featured..."); 
    }, 
     'error': function(data) 
     { 
     // this is what happens if the request fails. 
     $("span#success"+itemId).attr("innerHTML","An error occureed"); 
    } 
}); 
       } 
</script> 

ich wirklich ein Interesse haben Javascript in das Lernen und das Verständnis, wie es funktioniert. Alle Hinweise wären großartig!

+1

Groß verwendet werden, die Sie Javascript lernen. Mein Ratschlag ist, keinen Stack-Overflow als Lernwerkzeug zu verwenden. Sie erhalten viele inkonsistente und manchmal falsche Antworten. Schau dir diese kostenlosen Bücher an. Wirklich hat mir geholfen, Javascript zu verstehen. https://github.com/getify/You-Dont-Know-JS –

Antwort

3

Sie haben fehlende Buchstaben im Code

ersetzen
<script type="text/javasript"> 

mit

<script type="text/javascript"> 

type andere als text/javascript Verwendung verhindert Browser von Parsen dem Inhalt

Bonus-Tipp - nicht attr('innerHTML', ...) verwenden, weil es auf vielen Ebenen falsch ist ... element.innerHTML/$(element).html() (wenn Sie jQuery verwenden) sollte stattdessen

+0

Das schien mein erstes Problem zu beheben. Ich kann nicht glauben, dass ich den Brief verpasst habe. Wirklich schnell, ich habe gerade das, nachdem ich die c. index.php: 43412 Uncaught TypeError: Die Eigenschaft 'status' von null kann nicht gelesen werden. Irgendwelche Zeiger? Danke –

+0

versuchen Sie einige Debugging - 'console.log (Daten)' in der Zeile, bevor Sie helfen sollten – pwolaq

+0

"Text/Javascript" ist veraltet obwohl, sollten Sie "application/javascript" verwenden. – Fortune

Verwandte Themen