我有一个问题,如何在不重定向的情况下打开提交表单的打印窗口。现在,当我提交表单时,也会重定向到提交的表单结果。
控制器。如果必要的话,我可以为提交的表格结果创建刀片文件来解决这个问题。
public function printBarcode(BarcodeRequest $request)
{
$bar = new DNS1D();
$user = User::find(Auth::id());
$barcodes = $request->input('prints');
for ($i = 0; $i <= count($barcodes) - 1; $i++) {
echo '<body onload="window.print();">';
echo '<div style="text-align: center; height: 100%">';
echo '<img src="data:image/png;base64,' . $bar->getBarcodePNG($barcodes[$i], 'C128', $user->barcode_width, $user->barcode_height) . '" alt="barcode" style="width: 50%;"/>';
echo '<br>';
echo '<br>';
echo '<p style="text-align: center; margin-top: 5px;">' . $barcodes[$i] . '</p>';
echo '</div>';
echo '</body>';
}
}
表单
Locations:
@for($i=0; $i<=count($warehouses)-1; $i++)
<input type="checkbox" name="all" id="all" onclick="toggle(this);">Select/remove all<br>
<form method="get" action="{{route('print.barcode')}}">
@csrf
<br>
@for($j=0; $j<=count($locations[$i])-1; $j++)
<input type="checkbox" name="prints[]" value="{{ $locations[$i][$j]['node']['name'] }}"> {{ $locations[$i][$j]['node']['name'] }}
<br>
<br>
@endfor
<button type="submit" valu="submit" class="btn btn-danger btn-sm" onclick="printBarcode({{route('print.barcode')}});">Print Selected</button>
</form>
<input type="checkbox" name="all" id="all" onclick="toggle(this);">Select/remove all<br>
@endfor
应该处理重定向的Javascript部分
function printBarcode(url){
window.location.replace('localhost/home');
$('body').append('<iframe src="url" id="printIFrame" name="printIFrame"></iframe>');
$('#printIFrame').bind('load',
function() {
window.frames['printIFrame'].focus();
window.frames['printIFrame'].print();
window.location.href = 'localhost/home';
}
);
}
通过ajax 发送查询
function printBarcode(url) {
var form = $("#myFormId");
var url = form.attr('action'); //get submit url [replace url here if desired]
$.ajax({
type: "POST",
dataType: "html",
url: url,
data: form.serialize(), //serializes form input
success: function(data){
//Past to DIV
$("#printArea").html(data);
$("#printArea").print();
}
});
};
或使用
window.open(url+'?'+queryString(;并在新窗口中打开页面