我试图将html代码作为POST数据发送到php页面,如下所示:
report_data['finalhtml'] = '\n\n\n<!------ page split ----\>\n<div class="clearfix">'+html+'</div><!------ page split end ----\>\n\n\n';
var report = JSON.stringify(report_data);
var report_json = encodeURIComponent(window.btoa(report));
var url = baseurl+"/pdf-report";
var newForm = jQuery('<form>', {
'action': url,
'method': 'POST',
'target': '_top'
}).append(jQuery('<input>', {
'name': 'report_details',
'value': report_json,
'type': 'hidden',
}))
.append(jQuery('<input>', {
'name': 'project_name',
'value': successdata.ProjectTitle,
'type': 'hidden'
}));
$('body').append(newForm);
SAT_utilities_js.RemovePageLoader();
newForm.submit();
但是当我在PHP页面上获取数据时,我得到的错误为 ERR_BLOCKED_BY_XSS_AUDITOR
我用谷歌搜索了此错误,并知道我需要对HTML代码进行BASE64。 所以我在JS中做了base64,但是后来我在php中没有得到正确的base64解码字符串。原因是我的JS对象先转换为JSON,然后在BASE64中编码。
问题是我不能单独使用base64,也不能单独使用stringify。
现在我还没有使用jQuery FORM和POST方法将html代码发送到PHP页面的完整方法。
请提出任何将JS中的HTML代码发送到PHP页面的方法
答案 0 :(得分:1)
您的base64和stringify流程似乎是错误的。
您真的只希望在将字符串字符串化为json之前将base64编码的html字符串
尝试
var finalhtml = '<...html string...>';
report_data['finalhtml'] = btoa(finalhtml);
var report = JSON.stringify(report_data);
然后用php
$report_detail = json_decode($_POST['report_detail']);
$base64_html = $report_detail->finalhtml;