window.open post提交数组
时间: 2023-10-02 20:03:41 浏览: 96
可以使用 `FormData` 对象将数组转换为可提交的表单数据,然后使用 `XMLHttpRequest` 或 `fetch` 进行 POST 提交。
以下是示例代码:
```
// 定义数组
var arr = [1, 2, 3];
// 将数组转换为 FormData 对象
var formData = new FormData();
for (var i = 0; i < arr.length; i++) {
formData.append('arr[]', arr[i]);
}
// 发送 POST 请求
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://example.com/api');
xhr.send(formData);
```
在以上代码中,`FormData` 对象的 `append` 方法用于向表单中添加数据,每个数据的名称为 `arr[]`,表示这是一个数组。在服务器端处理请求时,可以根据这个名称来解析数组数据。
相关问题
<script> function base64ToUint8Array(base64) { var raw = atob(base64); var uint8Array = new Uint8Array(raw.length); for (var i = 0; i < raw.length; i++) { uint8Array[i] = raw.charCodeAt(i); } return uint8Array; } $(document).ready(function() { let MODULE_PATH = "/zhengshu/"; // 获取URL参数中的ID var urlParams = new URLSearchParams(window.location.search); var id = "<?php echo $this->gets['0'];?>"; var token = "<?php echo setToken();?>"; // 发送AJAX POST请求获取base64格式的PDF文件 $.ajax({ url: MODULE_PATH + 'pdfbase64', type: 'POST', data: { id: id,token: token}, success: function(response) { var pdfData = base64ToUint8Array(response); console.log(pdfData); // 使用pdf.js打开PDF文件 PDFViewerApplication.open(pdfData); }, error: function(error) { console.log('Error:', error); } }); // 禁用pdf.js工具栏上的按钮 var appOptions = { disablePreferences: true }; // 添加满屏水印 appOptions.watermark = { text: 'Your watermark text', diagonal: true }; // 初始化PDF Viewer PDFViewerApplication.run(appOptions); }); </script>
这段代码是一个使用pdf.js库来预览base64编码的PDF文件的示例。它使用了jQuery库和一些PHP代码。
首先,它定义了一个名为`base64ToUint8Array`的函数,用于将base64字符串转换为Uint8Array类型的字节数组。然后,在`$(document).ready`函数中,它从URL参数中获取ID和token。
接下来,它发送一个AJAX POST请求到指定的URL来获取base64格式的PDF文件数据。成功后,它将使用`base64ToUint8Array`函数将获取的base64数据转换为Uint8Array字节数组,并将其传递给PDFViewerApplication的`open`方法来打开PDF文件。
在这段代码中,还定义了一些PDFViewerApplication的配置选项。例如,禁用了工具栏上的偏好设置按钮,以及添加了一个水印文本。
请注意,此代码片段包含了一些PHP代码,其中使用了`<?php ?>`标签,这可能是用于生成动态内容的部分。在这里,您需要根据您自己的环境和需求进行适当的调整。
希望这可以帮助到您!如果您还有其他问题,请随时提问。
ajax 传数组参数 并下载zip文件 兼容ie
A:要在ajax请求中传递数组参数并下载zip文件,可以像下面这样进行操作:
```javascript
// 创建一个XMLHttpRequest对象
var xhr = new XMLHttpRequest();
// 指定请求方法和URL
xhr.open('POST', 'download.php');
// 设置请求头:Content-Type为application/x-www-form-urlencoded
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// 定义响应类型为二进制数据
xhr.responseType = 'blob';
// 构建传递的参数对象
var param = {
arr: [1, 2, 3, 4, 5]
};
// 将参数对象序列化成字符串
var data = 'param=' + encodeURIComponent(JSON.stringify(param));
// 发送ajax请求
xhr.send(data);
// 请求完成后的回调函数
xhr.onload = function () {
if (xhr.status === 200) {
// 获取响应数据
var blob = xhr.response;
// 创建一个a标签,设置下载属性并添加到文档中
var a = document.createElement('a');
a.style.display = 'none';
a.href = URL.createObjectURL(blob);
a.download = 'filename.zip';
document.body.appendChild(a);
// 模拟点击a标签进行下载
a.click();
// 移除a标签
document.body.removeChild(a);
}
};
// 兼容ie方法
if (window.navigator.msSaveOrOpenBlob) {
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
var blob = new Blob([xhr.response], { type: 'application/octet-stream' });
window.navigator.msSaveOrOpenBlob(blob, 'filename.zip');
}
};
}
```
需要注意的是,对于兼容IE的情况,需要在readystatechange事件中判断xhr.readyState是否为4,以确保请求已经完成。另外,由于IE不支持responseType属性,所以需要使用Blob对象来构建响应数据,然后调用window.navigator.msSaveOrOpenBlob方法来触发下载。
阅读全文