[英]How to pass a php variable as an argument to a javascript function
我在 JS 中有一個 function ,它將驗證傳遞給它的值。 我在 php 中還有一個 while 循環,它遍歷從數據庫中獲取的數據行。 這就是我想要實現的,每次調用 js function(在循環內)時,都會驗證特定行中的注冊號。 下面是我的示例代碼,我試圖讓它工作,但仍然找不到解決方法。
while ($row=mysqli_fetch_array($result)) {
$registration_number=$row['registration_number'];
echo "<script>checkRegNum(".$registration_number.");</script>";
}
?>
<script>
function checkRegNum(str){
var str_1=str.replace("-","");
var str_2=str_1.replace("-","");
var str_3=str_2.replace("-","");
var str_4=str_3.replace("/","");
var str_5=str_4.replace("/","");
var str_6=str_5.replace("/","");
var final_str=str_6;
if(final_str.length!=14){
return 2;
}else{
if( (isNaN(x1)) && (!isNaN(x2)) && (!isNaN(x3)) && (!isNaN(x4)) ){
return 1;//format correct
}else{
return 1;//Format wrong
}
}
</script>
首先,您錯過了 function 的}
。 像這樣試試!
要在 javascript function 從 PHP 中傳遞值,您需要用 queets 包圍它,如下所示:
echo '<script>checkRegNum("'.$registration_number.'");</script>';
<script>
function checkRegNum(str){
var str_1=str.replace("-","");
var str_2=str_1.replace("-","");
var str_3=str_2.replace("-","");
var str_4=str_3.replace("/","");
var str_5=str_4.replace("/","");
var str_6=str_5.replace("/","");
var final_str=str_6;
if(final_str.length!=14){
console.log('A 1');
return 2;
}else{
if( (isNaN(x1)) && (!isNaN(x2)) && (!isNaN(x3)) && (!isNaN(x4)) ){
console.log('A 2');
return 1;//format correct
}else{
console.log('A 3');
return 1;//Format wrong
}
}
}
</script>
<?
while ($row=mysqli_fetch_array($result)) {
$registration_number=$row['registration_number'];
echo '<script>checkRegNum("'.$registration_number.'");</script>';
}
?>
要查看 function 是否有效,我為每個返回添加了控制台日志消息。
出現了很多問題,這表明這可能是一個糟糕的解決方案。
為什么不首先驗證 PHP 中的注冊號? 無效的注冊號如何在數據庫中結束? 在將輸入提交到數據庫等之前,您應該始終驗證輸入。而不是之后。
無論如何,checkRegNum function 應該在 PHP 片段上方定義。 在 javascript 中(與大多數語言一樣),您必須在引用之前定義 function 或變量。
<script>
function checkRegNum(str){
var str_1=str.replace("-","");
var str_2=str_1.replace("-","");
var str_3=str_2.replace("-","");
var str_4=str_3.replace("/","");
var str_5=str_4.replace("/","");
var str_6=str_5.replace("/","");
var final_str=str_6;
if(final_str.length!=14){
console.log('A 1');
return 2;
} else {
if( (isNaN(x1)) && (!isNaN(x2)) && (!isNaN(x3)) && (!isNaN(x4)) ){
console.log('A 2');
return 1;//format correct
}else{
console.log('A 3');
return 1;//Format wrong
}
}
}
<?php
while ($row=mysqli_fetch_array($result)) {
echo 'checkRegNum("' . htmlspecialchars($row['registration_number']) . '");';
}
?>
</script>
此外,您可能希望使用 strip_tags() 或 htmlspecialchars() 和其他清理功能清理注冊號,以確保沒有通過您的數據庫進行代碼注入(XSS 攻擊)。 顯然,未經處理的數據最終可能會出現在您的數據庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.