将 GET 从 PHP 参数发送到 AJAX

Sending GET from PHP parameter to AJAX

我的编码不工作。请问谁能告诉我为什么? 这是代码:

AJAX代码:

function sale(sale_code,sale_quantity) {
        if (sale_code.length == 0 || sale_quantity == 0) {
            alert("Product's code & quantity are required!");
            return;
        } else {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("show").innerHTML = xmlhttp.responseText;
                }
            };
            xmlhttp.open("GET", "sl.php?sdoc_no=<?= $sdoc_no ?>&sdoc_date=<?= $sdoc_date ?>&sale_code=" + sale_code + "&sale_quantity=" + sale_quantity, true);
            xmlhttp.send();

        }
    }

HTML & PHP:

<?php $qitem = mysqli_query($conn, "SELECT * FROM stocks WHERE stock_type = 'product'");
while($ritem = mysqli_fetch_array($qitem)){ ?>

<div class="col-md-4 col-sm-6 text-center">
    <button class="btn btn-info btn-block" type="button" onclick="sale(<?= $ritem['stock_code'] ?>, 1)"><?= $ritem["stock_name"] ?><br />
        <small>RM <?= number_format($ritem["stock_sprice"], 2) ?></small>
    </button>
</div>

<?php } ?>

sl.php 文件正在运行并返回数据(如果我手动放置的话)。请注意,我为此按钮使用了 bootstrap 选项卡。

我怎么看不到...

你错了:

xmlhttp.open("GET", "sl.php?sdoc_no=<?= $sdoc_no ?>&sdoc_date=<?= $sdoc_date ?>&sale_code=" + sale_code + "&sale_quantity=" + sale_quantity, true);

你不能在JavaScript中使用PHP...所以你错了:

sl.php?sdoc_no=<?= $sdoc_no ?>&sdoc_date=<?= $sdoc_date ?>&sale_code=" + sale_code + "&sale_quantity=" + sale_quantity

<?= $sdoc_no ?><?= $sdoc_date ?> 不是有效的 JS 代码...

您需要在 js 中将字符串参数用引号引起来:

变化:

sale(<?= $ritem['stock_code'] ?>, 1)

至:

sale('<?= $ritem['stock_code'] ?>', 1)

那么在将参数用作 url 参数之前,您应该对参数进行 uri 编码。

对于 JS,使用 encodeURI and for PHP, use urlencode;