为什么在控制台中回显功能打印数据?

时间:2019-01-17 10:41:42

标签: php html ajax echo

我正在用PHP创建页面,但是当我使用AJAX发送数据时,echo函数开始在控制台中而不是在DOM元素中打印数据。

我想在我的页面上添加Quagga条码阅读器。 Quagga是用JS写的,但是我的页面是用php编写的。因此,我必须使用Ajax将条形码结果发送到我的php代码。而且有一个问题。发送数据(POST)并使用echo将其显示在屏幕上之后,回显应显示的每个数据都将显示在控制台中。我不仅发送数据,而且发送整个页面的html代码。甚至header('Location: ')也无法正常工作。因为我将读取的代码发送到barcodereaded.php,在其中将POST数据放入SESSION var中,所以我尝试在屏幕上的不同文件barcoderesult.php中回显该代码,但每次在控制台中打印数据时登录barcode.php(下面的代码)。在所有其他子页面上,php echo和header函数都可以正常工作,只有这种情况才会引起麻烦。

<div id="scanner-container"></div>
<input type="button" id="btn" value="Start/Stop" />

<script src="js/quagga.min.js"></script>

<script>

    var _scannerIsRunning = false;

    function startScanner() {


        var barcode = {};
        Quagga.init({
            inputStream: {
                name: "Live",
                type: "LiveStream",
                numOfWorkers: navigator.hardwareConcurrency,
                target: document.querySelector('#scanner-container'),
                constraints: {
                    size: 1920,
                    width: 200,
                    height: 480,
                    facingMode: "environment"
                },
            },
            config: {
                frequency: 5,
            },
            locator: {
                patchSize: "x-large",
            },
            decoder: {
                readers: [
                    "code_128_reader",
                    "ean_reader",
                    "ean_8_reader",
                    "code_39_reader",
                    "code_39_vin_reader",
                    "codabar_reader",
                    "upc_reader",
                    "upc_e_reader",
                    "i2of5_reader"
                ],
                debug: {
                    showCanvas: true,
                    showPatches: true,
                    showFoundPatches: true,
                    showSkeleton: true,
                    showLabels: true,
                    showPatchLabels: true,
                    showRemainingPatchLabels: true,
                    boxFromPatches: {
                        showTransformed: true,
                        showTransformedBox: true,
                        showBB: true
                    }
                }
            },

        }, function (err) {
            if (err) {
                console.log(err);
                return
            }

            console.log("Initialization finished. Ready to start");
            Quagga.start();

            // Set flag to is running
            _scannerIsRunning = true;
        });

        Quagga.onProcessed(function (result) {
            var drawingCtx = Quagga.canvas.ctx.overlay,
            drawingCanvas = Quagga.canvas.dom.overlay;

            if (result) {
                if (result.boxes) {
                    drawingCtx.clearRect(0, 0, parseInt(drawingCanvas.getAttribute("width")), parseInt(drawingCanvas.getAttribute("height")));
                    result.boxes.filter(function (box) {
                        return box !== result.box;
                    }).forEach(function (box) {
                        Quagga.ImageDebug.drawPath(box, { x: 0, y: 1 }, drawingCtx, { color: "green", lineWidth: 2 });
                    });
                }

                if (result.box) {
                    Quagga.ImageDebug.drawPath(result.box, { x: 0, y: 1 }, drawingCtx, { color: "#00F", lineWidth: 2 });
                }

                if (result.codeResult && result.codeResult.code) {
                    Quagga.ImageDebug.drawPath(result.line, { x: 'x', y: 'y' }, drawingCtx, { color: 'red', lineWidth: 3 });
                }
            }
        });


        Quagga.onDetected(function (result) {
            Quagga.stop();
            barcode.code = result.codeResult.code;
            $.ajax({
                url: "barcodereaded.php",
                method: "POST",
                data: barcode,
                success: function(res){
                    console.log(res);
                }

            });
        });
    }

    // Start/stop scanner
    document.getElementById("btn").addEventListener("click", function () {
        if (_scannerIsRunning) {
            Quagga.stop();
            _scannerIsRunning = false;
        } else {
            startScanner();
        }
    }, false);
</script>

我只想将读取的条形码发送到其他文件,以将其转换为要添加到数据库中的数据(托盘上元素的数量,生产日期等)

1 个答案:

答案 0 :(得分:3)

查看代码的这一部分:

$.ajax({
    url: "barcodereaded.php",
    method: "POST",
    data: barcode,
    success: function(res){
        console.log(res);
    }

});

success方法告诉您如何处理ajax代码的结果。 在这里,您专门告诉将响应(res)记录到控制台。

相反,您可以使用res的内容通过首选的Javascript解决方案(香草,jQuery等)将其附加到您的dom中。

使用jQuery,您可以(如果php代码的结果是一些文本):

$('#my-return-container').text(res)