如何将HTML代码作为POST数据从Jquery Form传递到PHP页面?

时间:2018-11-23 22:29:33

标签: javascript php jquery forms

我试图将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页面的方法

1 个答案:

答案 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;