ajax - 在 laravel [dateFormat: year-month] 中使用 Carbon::createFromFormat 时出现数据丢失错误
问题描述
使用 Carbon 将数据传递到 Laravel 中的 pdf 视图时出现“数据丢失”错误。当数据通过下拉列表传递回同一页面但传递到另一个页面时出现错误时,查询工作。
我使用日期选择器作为我的下拉列表,我使用的日期格式是:
"2020-December"
阿贾克斯:
changeMonth:true,
changeYear:true,
showButtonPanel:true,
dateFormat: "yy-MM",
onClose: function(dateText, inst) {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year, month, 1));
}
});
$('#convertBtn').click(function() {
var s = document.getElementById("sites");
var site = s.options[s.selectedIndex].text;
var startdate = $('#datepicker-8').val();
if(site != '' && startdate != '' )
{
$.ajax({
paging: false,
searching: false,
processing: true,
retrieve: true,
serverSide: true,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url:"{{ route('billing.bill') }}",
type:"GET",
dataType:"json",
data:{
site:site,
startdate:startdate,
},
success:function(data){
alert(JSON.stringify(data));
},
error: function(data){
alert('Error');
}
})
}
else
{
alert("Please select 'Site' & 'Date'. ");
}
});
控制器
$sites['report_date'] = Carbon::createFromFormat('Y-F', $request->startdate);
$data = DB::table('monthly_data')
->where('site', $request->site)
->whereMonth('report_date', $sites['report_date'])
->whereYear('report_date',$sites['report_date'])
->get();
$pdf = \App::make('dompdf.wrapper');
$pdf -> loadView('pdf',compact('data'));
$pdf -> setPaper('a4','landscape');
return $pdf->stream('report.pdf');
我可以知道如何解决这个错误吗?
解决方案
解决方案:在ajax中做一些改变
data: {
site: site,
startdate: startdate,
},
xhrFields: {
responseType: 'blob' // to avoid binary data being mangled on charset conversion
},
success: function(blob, status, xhr) {
var ieEDGE = navigator.userAgent.match('/Edge/g');
var ie = navigator.userAgent.match('/.NET/g'); // IE 11+
var oldIE = navigator.userAgent.match('/MSIE/g');
if (ie || oldIE || ieEDGE) {
window.navigator.msSaveBlob(blob, fileName);
} else {
var fileURL = URL.createObjectURL(blob);
document.write('<iframe src="' + fileURL + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');
}
},
error: function(data) {
alert('Error');
}
删除dataType:"json";
并替换它, xhrFields: { responseType: 'blob'}
然后它就可以工作了
推荐阅读
- hikvision - 配置对海康威视摄像机的访问
- r - 如何在 R 中将一列的元素与 group_by 相交
- python - 如何在 Selenium 中“if else”(selenium.common.exceptions.StaleElementReferenceException)
- sharepoint - 将版本历史从 sharepoint 导出到 power bi 时出错
- javascript - 如何在角度/打字稿中执行字符串插值以从变量中访问值?
- python - firefox用python运行时如何访问firefox的cookies数据库?
- c# - 你好。我无法向输出数组添加值,并且出现运行时错误“索引超出数组范围
- javascript - 如何在反应中删除数组选项卡中的聊天值
- python - Python Numpy:对 numpy 对象数组执行算术运算
- node.js - 无法执行模块功能