Php 为什么回显功能在控制台中打印数据?
我用PHP创建页面,但当我使用AJAX发送数据时,echo函数开始在控制台中而不是在DOM元素中打印数据 我想将Quagga条形码阅读器添加到我的页面。Quagga是用JS编写的,但我的页面是用php编写的。所以我必须使用Ajax将条形码结果发送到我的php代码。这是一个问题。发送数据(POST)并使用Php 为什么回显功能在控制台中打印数据?,php,html,ajax,echo,Php,Html,Ajax,Echo,我用PHP创建页面,但当我使用AJAX发送数据时,echo函数开始在控制台中而不是在DOM元素中打印数据 我想将Quagga条形码阅读器添加到我的页面。Quagga是用JS编写的,但我的页面是用php编写的。所以我必须使用Ajax将条形码结果发送到我的php代码。这是一个问题。发送数据(POST)并使用echo在屏幕上显示数据后,echo应该显示的每个数据都会显示在控制台中。我发送的不仅是数据,还有整个页面的html代码。即使是标题('Location:')也不能正常工作。因为我将读取的代码发送
echo
在屏幕上显示数据后,echo应该显示的每个数据都会显示在控制台中。我发送的不仅是数据,还有整个页面的html代码。即使是标题('Location:')
也不能正常工作。因为我将读取的代码发送到barcodereaded.php
,在那里我将POST数据放在SESSION
var中,并尝试在不同的文件barcodereresult.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>
var\u scannerIsRunning=假;
函数startScanner(){
var条码={};
Quagga.init({
输入流:{
姓名:“现场”,
键入:“LiveStream”,
numOfWorkers:navigator.hardwareConcurrency,
目标:document.querySelector(“#scanner container”),
限制条件:{
尺寸:1920,
宽度:200,
身高:480,
面向模式:“环境”
},
},
配置:{
频率:5,
},
定位器:{
补丁大小:“x-large”,
},
解码器:{
读者:[
“代码读取器”,
“ean_阅读器”,
“ean_8_阅读器”,
“代码阅读器”,
“代码\u 39\u vin\u读取器”,
“codabar_阅读器”,
“upc_阅读器”,
“upc_e_阅读器”,
“i2of5\U读卡器”
],
调试:{
showCanvas:没错,
是的,
这是真的,
是的,
showLabels:没错,
showPatchLabels:对,
showRemainingPatchLabels:正确,
boxFromPatches:{
对,,
showTransformedBox:正确,
showBB:是的
}
}
},
},函数(err){
如果(错误){
控制台日志(err);
返回
}
log(“初始化完成。准备启动”);
Quagga.start();
//将标志设置为正在运行
_扫描仪正在运行=真;
});
Quagga.onProcessed(函数(结果){
var drawingCtx=Quagga.canvas.ctx.overlay,
drawingCanvas=Quagga.canvas.dom.overlay;
如果(结果){
如果(结果框){
clearRect(0,0,parseInt(drawingCanvas.getAttribute(“宽度”)),parseInt(drawingCanvas.getAttribute(“高度”));
result.box.filter(函数(框){
返回框!==result.box;
}).forEach(功能(框){
drawPath(框,{x:0,y:1},drawingCtx,{color:“green”,线宽:2});
});
}
如果(结果框){
drawPath(result.box,{x:0,y:1},drawingCtx,{color:“#00F”,线宽:2});
}
if(result.codesult&&result.codesult.code){
drawPath(result.line,{x:'x',y:'y'},drawingCtx,{color:'red',线宽:3});
}
}
});
Quagga.onDetected(函数(结果){
嘎嘎。停止();
barcode.code=result.codesult.code;
$.ajax({
url:“barcodereaded.php”,
方法:“张贴”,
数据:条形码,
成功:功能(res){
控制台日志(res);
}
});
});
}
//启动/停止扫描仪
document.getElementById(“btn”).addEventListener(“单击”,函数)(){
如果(\u扫描仪正在运行){
嘎嘎。停止();
_扫描仪正在运行=错误;
}否则{
startScanner();
}
},假);
我只想将读取的条形码发送到其他文件,将其转换为我要添加到数据库的数据(托盘上的元素数量、生产日期等)查看代码的这一部分:
$.ajax({
url: "barcodereaded.php",
method: "POST",
data: barcode,
success: function(res){
console.log(res);
}
});
success
方法告诉您如何处理ajax代码的结果。
在这里,您特别要求将响应(res)记录到控制台
相反,您可以使用res
的内容,通过首选的Javascript解决方案(香草、jQuery等)将其附加到dom中
使用jQuery,您可以(如果php代码的结果是一些文本):
查看代码的这一部分:
$.ajax({
url: "barcodereaded.php",
method: "POST",
data: barcode,
success: function(res){
console.log(res);
}
});
success
方法告诉您如何处理ajax代码的结果。
在这里,您特别要求将响应(res)记录到控制台
相反,您可以使用res
的内容,通过首选的Javascript解决方案(香草、jQuery等)将其附加到dom中
使用jQuery,您可以(如果php代码的结果是一些文本):
你能为这个添加一个js提琴吗!JS不是我喜欢的东西,这个项目是我学习一些高级php编码的方式。是的,当你不习惯JS时,JS可能会很棘手,我也去过那里!如果有效的话