2016-06-22 11 views
0

Ich habe Probleme beim Schreiben von Javascript in PHP-Code. Hier mein Skript:Uncaught SyntaxError: fehlt) nach der Argumentliste beim Schreiben von Javascript in PHP-Code

echo ' <script>'; 
echo ' $(function(){'; 
echo ' x = parseInt($("#counter2").val());'; 
echo ' $("#add_row2").click(function(){'; 
echo ' $("#addr2"+x).html("<td align="right">\'+ (x+1) +\'</td><td class="col-xs-2"><input type="text" name="vprice[]" class="required form-control text-right"></td><td class="col-xs-2"><input type=text" name="vminorder[]" class="required form-control text-right"></td>");'; 
echo ' $("#tab_logic2").append("<tr id="addr2\'+ x+1 +\'"></tr>");'; 
echo ' x++;'; 
echo ' });'; 
echo ' $("#delete_row2").click(function(){'; 
echo ' if(x> 1){'; 
echo ' $("#addr2"+(x-1)).html("");'; 
echo ' x--;'; 
echo ' }'; 
echo ' });'; 
echo ' });'; 
echo ' </script>'; 

Wenn es läuft, ist ein Fehler Uncaught Syntax erzeugen: fehlt) nach Argumentliste in Zeile in dieser Linie haben

echo ' $("#addr2"+x).html("<td align="right">\'+ (x+1) +\'</td><td class="col-xs-2"><input type="text" name="vprice[]" class="required form-control text-right"></td><td class="col-xs-2"><input type=text" name="vminorder[]" class="required form-control text-right"></td>");'; 
echo ' $("#tab_logic2").append("<tr id="addr2\'+ x+1 +\'"></tr>");'; 

Da Variable I Anführungszeichen verwenden und wickeln Sie es mit \ Etikett. Es ist immer noch ein Fehler.

Irgendwelche Beschwerden?

+3

Sie brauchen kein Echo pro Zeile –

+2

Sie können [HEREDOC] (http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc) PHP-Syntax verwenden dafür – 0x13a

+3

und BTW sollten Sie nicht unbedingt Js-Code mit PHP – 0x13a

Antwort

1

Das Problem liegt offensichtlich an der verrückten Mischung von Syntax und der Verwirrung, die es verursacht.

Verwenden Sie zuerst HEREDOC wie @Diego im Kommentar vorgeschlagen:

// A single `echo`! 
echo <<<EOD 
<script> 
    \$(function(){ 
     x = parseInt(\$("#counter2").val()); 
     \$("#add_row2").click(function(){ 
      \$("#addr2"+x).html("<td align='right'>" + (x+1) + "</td>" + 
           "<td class='col-xs-2'><input type='text' name='vprice[]' class='required form-control text-right'></td>" + 
           "<td class='col-xs-2'><input type='text' name='vminorder[]' class='required form-control text-right'></td>"); 
      \$("#tab_logic2").append("<tr id='addr2" + (x+1) + "'></tr>"); 
      x++; 
     }); 
     \$("#delete_row2").click(function(){ 
     if(x> 1){ 
      \$("#addr2"+(x-1)).html(""); 
      x--; 
     } 
    }); 
}); 
</script> 
EOD; 

Dabei wird sie von dem äußeren Satz von Zitaten zu befreien, die es etwas leichter macht. Danach habe ich die doppelten Anführungszeichen aus dem HTML entfernt, die Probleme mit Ihrer Methode jQuery html verursachten.

Nur die Organisation des Codes wird Ihnen helfen, dies in Zukunft zu verhindern.

+0

Fwiw, Sie können keine Zeilenvorschübe wie in JS-Strings haben. –

+0

danke @ wes-foster, aber ich benutze Codeigniter-Framework, und es zeigt mehr Fehler :( – reefman

+0

Wie sieht "mehr Fehler" aus? –

0

Sie haben unausgeglichene Anführungszeichen in Ihrer Ausgabe, z.B .:

"<td align="right">' 

"<tr id="addr2' 

Betrachten wir ein Template-Engine verwenden.

Und es ist eine gute Idee, serverseitigen Code von dem zu trennen, was er generiert: Wenn Sie ein clientseitiges Problem haben, untersuchen Sie zuerst den resultierenden Code anstelle des serverseitigen Codes.

Verwandte Themen