XMLHttpRequest POST formData到一个新的选项卡



由于loadOneTab()不可用于formData

  1. formData如何被张贴到一个新的标签?
  2. 如何设置上述新选项卡的前景/背景状态?

只是使用FormData对象的一个示例:

var formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 123456); // number 123456 is immediately converted to string "123456"
// HTML file input user's choice...
formData.append("userfile", fileInputElement.files[0]);
// JavaScript file-like object...
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var blob = new Blob([content], { type: "text/xml"});
formData.append("webmasterfile", blob);
var request = new XMLHttpRequest();
request.open("POST", "http://foo.com/submitform.php");
request.send(formData);

澄清:
target="_blank"的普通HTML表单将把表单数据POST到一个新的选项卡。
类似地,如前所述,loadOneTab()也可以将数据POST到新选项卡。
是否可以这样做与XMLHttpRequest?

XHR与制表符毫无关系。如果您真的想要XHR它,那么您应该使用返回的源并与它一起更新目标选项卡的文档。

否则我就用loadOneTab:我想应该是这样的东西把它转换成nsIFile:

导入encodeFormData函数表单:https://stackoverflow.com/a/25020668/3791822

// HTML file input user's choice...
var userfileNSIFILE = new FileUtils.File(fileInputElement.files[0].path);
// JavaScript file-like object...
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var blob = new Blob([content], { type: "text/xml"});
//some code here to write blob to temp folder to make nsifile or do some stream stuff to get an nisfileoutputstream?
var blobNSIFILE = ....;
let postData = encodeFormData({
  "webmasterfile": blobNSIFILE,
  "userfile": userfileNSIFILE,
  "username": "Groucho",
  "accountnum": 123456
}, "iso8859-1");
gBrowser.loadOneTab("http://foo.com/submitform.php", {
  inBackground: false,
  postData: postData
});

这就是我的意思,加载responseText的xhr到一个选项卡,可以复制粘贴到记事本。

var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        switch (xhr.readyState) {
                case 4:
                   prompt('done', xhr.responseText);
                    gBrowser.loadOneTab('data:text/html, ' + encodeURIComponent(xhr.responseText), {
                      inBackground: false
                    });
            break;
          default:
        }
    };
    xhr.open("GET", "https://www.bing.com/");
    xhr.send();

相关内容

最新更新