尝试通过localStorage将值传递给另一个页面,setItem和jQuery不工作-是什么问题?

djmepvbi  于 2023-04-29  发布在  jQuery
关注(0)|答案(1)|浏览(125)

我有一个页面的一部分,它展示了一个任务的细节,上面有一个按钮,应该把用户重定向到编辑页面(Izmeni zadatak):

<div id="buttonwrapperdetalji">
        <button type="submit" class="dugmedetalji" name="button" onclick="izvrsiZadatak(); filtriraj();">Poništi zadatak</button>
        <form action="izmeni.php">
        <button type="submit" class="dugmedetalji" name="button2" onclick="izmeni();">Izmeni zadatak</button>
        </form>
    </div>
</div>

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

<script>
    function izmeni() {
        let zadatak = <?=$podaci->zadatakID?>;
        localStorage.setItem("id", zadatak);
        return false;
    }
</script>

现在,当我打开Edit页面或izmeni.php时,我想自动将select标记的值设置为与localStorage.setItem一起转发的id

<div class="containerwrapper">
        <form method="post" action="" enctype="multipart/form-data" class="container_izmena">
            <div id = "levo">
            <h4>Zadatak</h4>
            <select id="zadatak" name="zadatak" onchange="prikazi(this.value); popuniDetalje();"required></select>
            </div>

[...]

</form>

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

<script>  
    function popuniZadatke() {
        $.ajax({
            url: '../funkcije/popuniZadatke.php',
            success: function (data) {
                $("#zadatak").html(data);
            }
        });
    }
    popuniZadatke();

    function izaberi() {
        $("#zadatak").val(localStorage.getItem("id")).change();
    }
    izaberi();

</script>

下面是popuniZadatke.php代码:

<?php
require "../konekcija/konekcija.php";
require "../modeli/zadatak.php";

$zadaci = Zadatak::vratiZadatkeZaOpcije($konekcija);

?>
<option value="" disabled selected hidden><?= "Zadaci" ?> </option>
<?php

foreach ($zadaci as $zad) {
    ?>
    <option value="<?= $zad->zadatakID ?>"><?= $zad->naziv ?> </option>
    <?php
}
?>

函数izaberi()应该将其设置为转发的值,但这似乎不起作用。有什么问题吗?

8xiog9wr

8xiog9wr1#

izaberi在 AJAX 调用的success函数发生之前执行,因此它对#zadatak所做的更改会被$("#zadatak").html(data)覆盖。
我建议你从success函数内部调用izaberi:

function popuniZadatke() {
    $.ajax({
        url: '../funkcije/popuniZadatke.php',
        success: function (data) {
            $("#zadatak").html(data);
            izaberi();
        }
    });
}
popuniZadatke();

function izaberi() {
    $("#zadatak").val(localStorage.getItem("id")).change();
}
//izaberi();

相关问题