2016-04-24 2 views
-2

Ich habe alle SO Beiträge auf "Uncaught SyntaxError: fehlende) nach Argumentliste" gelesen und keiner von ihnen löst dieses Problem. Ich verstehe nicht, was falsch ist.Javascript schreiben HTML zu Seitenfehler

Ich gebe JSON für eine Datenbank zurück und schreibe HTML für jedes Ergebnis.

function addRow(str, count) { 
str = str.substr(0, str.length -5); 
document.getElementById("comments").innerHTML += '<br /><br /><div 
class="input-group"><span class="input-group-btn"><button class="btn btn-success" 
onclick="javascript:del(' + "'" + str + "'" + ');" type="button">Delete</button></span><p class="form-control">'+str+'</p><span class="input-group-btn"><button onclick="javascript:publish('+str+');" class="btn btn-success" type="button">Publish</button> 
</span></div>'; 
} 

Dies ist der Code, der den HTML-Code erstellt.

Ich erhalte keinen Fehler, bis ich auf die Schaltfläche 'Veröffentlichen' klicke. Ich würde also annehmen, dass etwas mit diesem Code oder der Veröffentlichungsfunktion nicht stimmt.

function publish(text) { 
xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET","http://example.com/test.php?type=upcom&text="+text,true); 
xmlhttp.send(); 
xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("comments").innerHTML = ""; 
      loadComment(); 
     } 
    } 
} 

Oben ist die Veröffentlichungsmethode.

Kann irgendjemand etwas entdecken, das "Uncaught SyntaxError: missing) nach der Argumentliste" verursachen würde?

Ich habe Stunden mit diesem Problem verbracht.

Dank

+0

Wo Sie dieses "Uncaught Syntaxerror" sehen Sie? im Element "Kommentare"? – kizeloo

+0

Es wirft es für Zeile 2, das HTML-Tag – calmcalmuncle

+0

Ist das Ihr tatsächlicher Code? Sie können keine Zeilenumbrüche innerhalb von Strings haben. – JJJ

Antwort

0

ich hier denke, das Problem ist, gibt es keine Anführungszeichen:

<button onclick="javascript:publish('+str+');"> 

Also, wenn str ist "meine Kommentare", wird ein Fehler generiert:

<button onclick="javascript:publish(my comments);"> 

So zu verwenden:

<button onclick="javascript:publish(\''+str.replace(/\'/g,'\\'') +'\') 

Also, wenn str "meine Kommentare" ist, generieren:

<button onclick="javascript:publish('my comments');"> 

Also, wenn str ist "calmcalmuncle Kommentare" generieren:

<button onclick="javascript:publish('calmcalmuncle\'s comments');"> 

Edit:

Sie müssen dies auch beheben:

<button onclick="javascript:del(' + "'" + str + "'" + ');">Delete</button> 

gleiche Weise:

<button onclick="javascript:del(\''+str.replace(/\'/g,'\\'');">Delete</button> 
+0

Danke, es war in der Tat ein Problem mit den Räumen. Du hast mir viel Zeit gespart! – calmcalmuncle