簡體   English   中英

PHP打印上帶有vars的Javascript函數:引號

[英]Javascript function with vars on PHP print: quotes

我只是想知道是否有更好的方法來記下傳遞給PHP打印內部的javascript函數的PHP變量:

while($nav = mysqli_fetch_array($nav_db)){
    print  '<li>
             <a href="#" onclick="getProductPage('.$nav['id'].', \''.$name.'\')">
                       '.$nav['Data'].'

             </a>
        </li>';
}

哪里

$nav['id']

是一個INTEGER所以我不需要額外的''為JS,和

$name

不是INTEGER所以我需要JS的那些\\'\\'。

特別是這一步:

getProductPage('.$nav['id'].', \''.$name.'\')

謝謝

<?php while($nav = mysqli_fetch_array($nav_db)): ?>
  <li>
     <a onclick="getProductPage(<?php echo $nav['id']; ?>, '<?php echo $name; ?>')">
        <?php echo $nav['Data']; ?>
     </a>
  </li>
<?php endwhile; ?>

你應該打破PHP編寫html。 這樣更干凈。 此外,你有一個流氓</span> ,而且<li>菜單中不需要<br> 此外, a標簽應該有一個href值,即使它是#javascript:void(0)或其他東西。

你應該使用json_encode將變量從php傳遞給javascript。 這將確保沒有未轉義的字符可以破壞您的JavaScript。

所以json_encode($name)代替$name等。

對於你的例子:

print  '<li>
         <a onclick="getProductPage(' . (int) $nav['id'].', ' . json_encode($name) . ')">
                   ' . htmlspecialchars($nav['Data']) . '

         </a>
    </li>';

你考慮過使用jquery和ajax將數據發送到php文件並將json_encode數組發送回javascript嗎?

在使用數據類型json向php發送ajax調用之后,發回這樣的變量

$data['id'] = nav['id'];

echo json_encode($data);

or just $nav['id']

echo json_encode($nav)

在你的JavaScript中。 成功時,您可以像這樣檢索id值

ajax{(
    blah,
    blah,
    ...
    success(msg){
    alert(msg.id)
    }
})

您可以將var作為對象訪問,上面的代碼將提醒id的值。 您可以將msg.id分配給javascript var或將其傳遞給函數...等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM