簡體   English   中英

將php值回顯到javascript onchange()中

[英]echo php value into javascript onchange()

我有這個html選擇表單,我正在使用onchange方法發送和xmlhttp請求。

<select class="form-control form-control-sm" id="sizeselector<?php echo $row["id"]?>" name="sizes" onchange="showColors(<?php echo $row["id"];?>, item, size)">
<?php while($row1 = $result1->fetch_assoc()){?>
<option value="<?php echo $row1["size"]?>"><?php echo $row1["size"]?></option>
<?php}?></select>
<div id="colorselector<?php echo $row["id"]?>">
    <p>Text</p>
</div>

上面的代碼有效,但是當我更改它以從行中獲取實際值時...

onchange="showColors(<?php echo $row["id"];?>, <?php echo $row["name"]?>, this.value)"

它根本不起作用,我已經嘗試了所有我能想到的。 我沒有錯誤。

function showColors(id, item, size) {
if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} else {
    // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        document.getElementById("colorselector"+id).innerHTML = this.responseText;
    }
};
try{
    xmlhttp.open("GET","getColor.php?s=size&c=size",true);
    xmlhttp.send();
}catch(err){
    document.getElementById("colorselector").innerHTML = err.message;
}

}

更新:這是我從源代碼獲得的輸出。

<select class="form-control form-control-sm" id="sizeselector40" name="sizes"onchange='showColors(40,'Women's Unicorn', this.value)'>

使用...

onchange='showColors(<?php echo $row["id"];?>, <?php echo $row["name"]?>, this.value)'

更新2:即使我手動將值添加到onchange,也什么也沒有發生。

onchange="showColors(27, t, a)"

function showColors(id, item, size) {
if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} else {
    // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        document.getElementById("colorselector"+id).innerHTML = this.responseText;
    }
};
xmlhttp.open("GET","getColor.php?s="+item+"&c="+size,true);
xmlhttp.send();

}

我可以在另一個瀏覽器窗口中運行getColor.php,並獲得結果。

您應該對javascript代碼和php索引使用不同的引號,否則請使用相同的引號形成錯誤的字符串

 onchange='showColors(<?php echo $row["id"];?> , <?php echo $row["name"]?>, this.value)'

或嘗試

 echo "onchange='showColors(".$row["id"] .",'". $row["name"] . "', this.value)'";

並使用ctrl + U檢查是否在頁面源代碼中形成了porper代碼

或者如果引號復雜,請使用一些var

    echo ' var my_id = ' . $row["id"] . ';';
    echo ' var my_name = "' . $row["name"] . '";';

    echo "onchange='showColors( my_id ,my_name, this.value)'";

並用您可以嘗試使用的名稱做單引號的存在

onchange= "showColors(<?php echo $row['id'];?>, 
                    <?php echo '"'.  $row['name'] . '"' ?>, this.value)"
<select id="mySelect" onchange="myFunction()">
<option value="Audi">Audi
<option value="BMW">BMW
<option value="Mercedes">Mercedes
<option value="Volvo">Volvo
</select>



<script>
function myFunction() {
    var x = document.getElementById("mySelect").value;
    alert(x);
}
</script>

我想您在<?php echo $row["name"]?>之后錯過了分號。

暫無
暫無

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

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