首页 > 解决方案 > 如何将 HTML 代码作为 POST 数据从 Jquery 表单传递到 PHP 页面?

问题描述

我正在尝试将 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 Object先转成JSON,然后用BASE64编码。

问题是我不能单独使用base64,也不能单独使用stringify。

现在我没有得到完整的证明方法来使用 jQuery FORM 和 POST 方法将我的 html 代码发送到 PHP 页面。

请提出任何将 HTML 代码从 JS 发送到 PHP 页面的方法

标签: javascriptphpjqueryforms

解决方案


您的 base64 和 stringify 流程似乎是错误的。

您真的只想要在字符串化为 json 之前对 html 字符串进行 base64 编码

尝试

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;

推荐阅读