从PHP参数发送GET到AJAX

时间:2016-06-19 07:56:03

标签: php 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&amp; 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文件正在工作并返回数据,如果我手动输入它。请注意,我正在使用此按钮的引导选项卡。

2 个答案:

答案 0 :(得分:1)

我怎么不能看到它......

你错了:

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代码......

答案 1 :(得分:0)

您需要在js中使用字符串参数的引号:

变化:

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

为:

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

然后,您应该在将参数用作url-parameters之前对其进行编码。

对于JS,请使用encodeURI,对于PHP,请使用urlencode;