Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将完整HTML页面提交到x-www-form-urlencoded作为查询字符串编码_Javascript_Jquery_Html_Query String - Fatal编程技术网

Javascript 将完整HTML页面提交到x-www-form-urlencoded作为查询字符串编码

Javascript 将完整HTML页面提交到x-www-form-urlencoded作为查询字符串编码,javascript,jquery,html,query-string,Javascript,Jquery,Html,Query String,我试图提交完整的HTML页面到服务器,但我没有一个表单提交。我不确定我是否做得正确,但使用javascript我试图将json对象{html:htmlPage,fileName:“foo”}重新构建为查询字符串,然后将其提交给服务器这是我的代码。当我使用str控制台时,HTML页面看起来不正确。我正在使用jquery var htmlPage = $("html").html(); var str = { html: htmlPage, fileName: "foo" }

我试图提交完整的HTML页面到服务器,但我没有一个表单提交。我不确定我是否做得正确,但使用javascript我试图将json对象{html:htmlPage,fileName:“foo”}重新构建为查询字符串,然后将其提交给服务器这是我的代码。当我使用str控制台时,HTML页面看起来不正确。我正在使用jquery

  var htmlPage = $("html").html();



       var str = { html: htmlPage, fileName: "foo" };
var params = jQuery.param( str );



           var xhr = new XMLHttpRequest();

xhr.open('POST', '/', true);

xhr.responseType = 'arraybuffer';
  xhr.onload = function () {

    if (this.status === 200) {
        var filename = "";
        var disposition = xhr.getResponseHeader('Content-Disposition');
        if (disposition && disposition.indexOf('attachment') !== -1) {
            var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
            var matches = filenameRegex.exec(disposition);
            if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');

        }
        var type = xhr.getResponseHeader('Content-Type');

        var blob = new Blob([this.response], { type: type });
        if (typeof window.navigator.msSaveBlob !== 'undefined') {

            window.navigator.msSaveBlob(blob, filename);
        } else {
            var URL = window.URL || window.webkitURL;
            var downloadUrl = URL.createObjectURL(blob);

            if (filename) {
                var a = document.createElement("a");
                if (typeof a.download === 'undefined') {
                    window.location = downloadUrl;
                } else {
                    a.href = downloadUrl;
                    a.download = filename;
                    document.body.appendChild(a);
                    a.click();
                }
            } else {
                window.location = downloadUrl;
            }

            setTimeout(function () { URL.revokeObjectURL(downloadUrl); }, 100); // cleanup
        }
    }
};
xhr.onerror = function(e) {
console.log('in error', e);
};
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
xhr.send(params);

如果您有jQuery,那么只需使用ajax即可。 这将base64编码你的html,然后在服务器端你只需要base64解码它,然后使用它。嘿,整个html代码不能算作表单数据,它是“text/html”

(更新)试试看,让我知道

// javascript
function _upload(html_string)
{
    return $.ajax({
        url: '/',
        type: 'POST',
        headers: {"Content-Type": "application/x-www-form-urlencoded"},
        data: {html: btoa(html_string), fileName: "foo" },
        success: function(data, textStatus, req){
            console.log(textStatus);
        },
        error: function(req , textStatus, errorThrown){
            console.log("jqXHR["+textStatus+"]: "+errorThrown);
            console.log('jqXHR.data', req.responseText);
        }
    });
}

嘿,谢谢你的回答,为什么我可以使用邮递员发送整个html?我的服务器正在使用变量x-www-form-urlencoded。没有JSON