我正在用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>
我只想将读取的条形码发送到其他文件,以将其转换为要添加到数据库中的数据(托盘上元素的数量,生产日期等)
答案 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)