2016-03-04 31 views
0

我做了一堆安全研究的,但似乎我不能找到一个很好的回答我的问题。添加生成的JavaScript事件来生成HTML

我有这样的代码在这里:

  while($row = mysqli_fetch_row($query)){ 
      $result .= ' 

       <script> 
        function Click'.$DOMid.'01(){answer("'.$DOMid.'","'.$row[2].'", "accept");} 
        function Click'.$DOMid.'02(){answer("'.$DOMid.'","'.$row[2].'", "decline");} 
       </script> 

       <div id = "'.$DOMid.'" style = "box-shadow: 5px 5px 2px #0f0f0a; margin: 10px; width:300px; padding:10px; border: 1px solid #0f0f0a;"> 
        <p> 
         Freundschaftsanfrage von: '.$row[2].' 
        </p> 
        <button id = "'.$DOMid.'01" onclick="Click'.$DOMid.'01">Accept</button> 
        <button id = "'.$DOMid.'02" onclick="Click'.$DOMid.'02">Decline</button> 
       </div> 
       '; 

       $DOMid = $DOMid+1; 
     } 

     $result .= '<script> 
         function answer(id, user, type){ 
          $.ajax({ 
           method: "POST", 
           url: "systems/friends_system.php", 
           data:{type: type, user, <?php echo json_encode($log_username);?>} 
          }).done(function(r){ 
           if(r.charAt(0) == "_"){ 
            window.location = "message.php?msg=" + r; 
           }else{ 
            _("id").style.display = "none"; 
           } 
          }); 
         } 
        </script>'; 

     echo $result; 
     exit(); 

的PHP代码,并生成HTML对于每个元素的JavaScript。

但我认为在这一点上,浏览器解析我的JavaScript部分心不是抛出的Clickxxx功能没有定义的错误。

生成的代码如下所示:

<script> 
    function Click001(){answer("0","Drop", "accept");} 
    function Click002(){answer("0","Drop", "decline");} 
</script> 
<div id="0" style="box-shadow: 5px 5px 2px #0f0f0a; margin: 10px; width:300px; padding:10px; border: 1px solid #0f0f0a;"> 
    <p> 
     Freundschaftsanfrage von: Drop 
    </p> 
     <button id="001" onclick="Click001">Accept</button> 
     <button id="002" onclick="Click002">Decline</button> 
</div> 
<script> 
    function answer(id, user, type){ 
     $.ajax({ 
      method: "POST", 
      url: "systems/friends_system.php", 
      data:{type: type, user, <?php echo json_encode($log_username);?>} 
     }).done(function(r){ 
      if(r.charAt(0) == "_"){ 
       window.location = "message.php?msg=" + r; 
      }else{ 
       _("id").style.display = "none"; 
      } 
     }); 
    } 
</script> 
+0

使用'的onclick = “Click001()”''的onclick = “Click001” 的INSEAD' –

回答

0

我彻底改造了代码

现在看起来是这样的:

$result .= '      
        <div id = "'.$DOMid.'" style = "box-shadow: 5px 5px 2px #0f0f0a; margin: 10px; width:300px; height: 105px; padding:10px; border: 1px solid #0f0f0a;"> 
         <p style = "height: 75px;"> 
          <span style = "line-height: 75px; margin: auto 2px;"> 
           Freundschaftsanfrage von: <a href = "/user.php?u='.$row[2].'">'.$row[2].'</a> 
          </span> 
          <span style = "line-height: 75px; margin: auto 2px;"> 
           <img src = "/user/'.$row[2].'/profile_pic.png" height = 60px width = 50px alt= "'.$row[2].'"> 
          </span> 
         </p> 
         <button id = "'.$DOMid.'01" onclick="answer('.$DOMid.', \''.$row[2].'\', \'accept\')">Accept</button> 
         <button id = "'.$DOMid.'02" onclick="answer('.$DOMid.', \''.$row[2].'\', \'decline\')">Decline</button> 
        </div>'; 

每个JavaScript现在是在原文件只需参数。

没有通用的Javascript需要。

1

的onclick是一个HTML事件,并认为Click001是一个函数,所以调用它与它的括号:

...button id="001" onclick="Click001()">... 
+1

* “的onClick是一个函数” *不,事实并非如此。它是一个包含JavaScript源代码的属性。 'Click001'是一个功能。 –

+0

@Yinkaking 括号没有做的伎俩,功能仍然是“不确定” – Dropye

1

你需要打电话给你的功能,也这是更好地利用JS的

while($row = mysqli_fetch_row($query)){ 
      $result .= ' 

       <script> 
        function Click(accept) 
        { 
         if(accept){ 
          answer("'.$DOMid.'","'.$row[2].'", "accept"); 
         }else{ 
          answer("'.$DOMid.'","'.$row[2].'", "decline"); 
         } 
        } 

       </script> 

       <div id = "'.$DOMid.'" style = "box-shadow: 5px 5px 2px #0f0f0a; margin: 10px; width:300px; padding:10px; border: 1px solid #0f0f0a;"> 
        <p> 
         Freundschaftsanfrage von: '.$row[2].' 
        </p> 
        <button id = "'.$DOMid.'01" onclick="Click(true)">Accept</button> 
        <button id = "'.$DOMid.'02" onclick="Click(false)">Decline</button> 
       </div> 
       '; 

       $DOMid = $DOMid+1; 
     } 

     $result .= '<script> 
         function answer(id, user, type){ 
          $.ajax({ 
           method: "POST", 
           url: "systems/friends_system.php", 
           data:{type: type, user, <?php echo json_encode($log_username);?>} 
          }).done(function(r){ 
           if(r.charAt(0) == "_"){ 
            window.location = "message.php?msg=" + r; 
           }else{ 
            _("id").style.display = "none"; 
           } 
          }); 
         } 
        </script>'; 

     echo $result;