2016-06-22 61 views
0

我在PHP代碼中編寫javascript問題。 這裏我的腳本:Uncaught SyntaxError:missing)在PHP代碼中寫入javascript時的參數列表後

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>'; 

當運行是產生錯誤未捕獲的語法錯誤:之後參數列表丟失)符合

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>");'; 

因爲在這條線具有可變我使用引號,用\包起來標籤。 它仍然是錯誤的。

任何sugesstion?

+3

你不需要每行一個回顯 – 2016-06-22 02:03:58

+2

你可以使用[HEREDOC](http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc)php語法爲了做到這一點 – 0x13a

+3

和順便說一句,你不應該肯定使用PHP – 0x13a

回答

1

這個問題顯然是由於語法的瘋狂混合以及它引起的混淆。

首先,使用HEREDOC像@Diego的評論所說:

// 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; 

在這樣做時,它擺脫了外集報價,這使得它比較容易的。之後,我擺脫了HTML中的雙引號,這會導致您的jQuery html方法出現問題。

只是代碼的組織將幫助您在將來避免這種情況。

+0

Fwiw,你不能像JS字符串那樣擁有換行符。 –

+0

謝謝@ wes-foster,但我使用codeigniter框架,它顯示更多的錯誤:( – reefman

+0

「更多的錯誤」是什麼樣子? –

0

你在你的輸出有不平衡報價,例如:

"<td align="right">' 

"<tr id="addr2' 

考慮使用模板引擎。

將服務器端代碼與其生成的代碼分開是一個好主意:如果您有客戶端相關問題,請首先調查生成的代碼而不是服務器端代碼。

相關問題