【问题标题】:Trigger JS function on pageload when populating select box from database从数据库中填充选择框时在页面加载时触发 JS 函数
【发布时间】:2019-09-26 13:34:41
【问题描述】:

我有以下触发下面选择框的 onChange 的 js 脚本。 然后它从表中检索数据并返回一些填充了数据的输入字段(使用下面的 PHP 代码)。然后保存数据。

这部分工作正常。

但是,如果我再次运行脚本,它会填充 DB 中的选定选项并显示为选定选项,但它不会显示从 PHP 代码/DB 查询返回的填充输入字段,因为我没有触发再次 onChange。

我尝试添加“window.onload = showAgentOne;”在 onChange 函数的 JS 下,假设它会从选择框中看到 (str) 中的值,但我可能遗漏了一些东西,因为它不起作用。

JS 新手 - 我希望这是有道理的。

JS:

function showAgentOne(str) {
    if (str == "") {
        document.getElementById("agent1").innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("agent1").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "user_agent1.php?q=" + str, true);
    xmlhttp.send();
}

window.onload = showAgentOne; // trigger function on pageload - not working

HTML:

<select name="narid" onchange="showAgentOne(this.value)" class="form-control">
    <option selected="selected" disabled value="">select agent</option>
    <?php
$sql = "select last_name, first_name, active, nrds_id from ft_form_2 ORDER BY last_name"; 
$sql_result = mysqli_query($mysqli,$sql);                                   
while ($row = mysqli_fetch_array($sql_result)) }?>
        <option value="<?php echo $row[" nrds_id "]; ?>" <?php if($narid_agent1==$ row[ "nrds_id"]) { echo ' selected '; } ?> >
            <?php echo strtoupper($row["last_name"]) . ' > ' . $row["first_name"] . ' ' . $row["last_name"] . ' ['.$active.']'; ?>
        </option>
        <? }  ?>
</select>
<div id="agent1"></div>

PHP (user_agent1.php) ------------------------- $q=$_GET["q"]; $sql="SELECT pay_to_name,nrds_id FROM ft_form_2 WHERE nrds_id = $q"; $result = mysqli_query($mysqli,$sql); while($row = mysqli_fetch_array($result)) { ?>
<input type="text" name="narid_agent1" value="<?php echo $row['nrds_id']; ?>">
<input type="text" name="pay2_agent1" value="<?php echo $row['pay_to_name']; ?>">
<?php } ?>

【问题讨论】:

  • 首先,您应该明确阅读有关 SQL 注入的信息,这绝对不安全: $q=$_GET["q"]; $sql="SELECT pay_to_name,nrds_id FROM ft_form_2 WHERE nrds_id = $q";

标签: javascript php


【解决方案1】:

'window.onload = showAgentOne;' 是一个很好的尝试,但它需要一个 str 参数,否则它会返回并且什么也不做。这就是为什么什么都没有发生的原因。

你将不得不尝试类似的东西

window.onload = function (event) {
    let str = 'ADD_YOUR_VALUE_HERE';
    showAgentOne(str);
}

但我无法帮助您了解 str 应该是什么。

【讨论】:

  • 谢谢威尔!我进行了修改,因此如果该选项与 db 值匹配,我将 str 的值设置为该值并且它可以工作:``` window.onload = function (event) { let str = '' showAgentOne(str); } ```
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2017-08-09
  • 2013-03-04
  • 2012-07-22
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多