我有一个选择框,它调用基于 XMLHttpRequest 的 AJAX 调用来填充另一个选择框。我希望 Selenium 等到选择框被填充。我必须等待 XMLHttpRequest 的 readState 变量的值为 4,这意味着数据已填充。
是否可以使用 XHR 或 fetch 下载二进制文件(pdf、word、excel、ppt、mp3...)?我已经看到了一些使用数据 URI 和 base64 转换的 pdf 和图像的片段和技巧。我们有更好的机制吗?
我需要下载具有以下限制的文件:
我的 NodeJS 代码
用于获取元数据
var options = {
hostname : API_HOST ,
method : 'GET',
port : 443,
path : API_PATH + fileId,
headers : {
'Authorization' : 'Bearer ' + GOOGLE_ACCESS_TOKEN
}
}
var meta = '';
var fileRequest = https.request(options, function(response) {
response.setEncoding('utf8');
response.on('data', function(chunk) {
meta += chunk;
});
response.on('end', function(error) {
callback(error, meta);
})
});
Run Code Online (Sandbox Code Playgroud)
用于获取实际文件
var file = fs.createWriteStream(GDRIVE_ROOT …Run Code Online (Sandbox Code Playgroud) 我正在使用此方法将参数发送到我的服务器 php,但我得到了您发布的值:
function post(path, parameters) {
var http = new XMLHttpRequest();
console.log(parameters);
http.open("POST", path, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send(parameters);
}
Run Code Online (Sandbox Code Playgroud)
php :
public function tracking_referidos(){
$this->autoRender = false;
$result = array();
$result['post'] = $_POST;
echo json_encode($result);
exit;
}
Run Code Online (Sandbox Code Playgroud)
结果 : {"post":{"referrer":"","event":"eventrid","hash":"45hfkabdus"}}
我正在尝试通过 API 在本地主机上登录我的 Rocket.chat 应用程序。
当我使用数据向http://localhost:3000/api/login发送 POST 时: {"user":"myusername","password":"mypassword"}
我收到状态错误的响应 401,无论是使用 xhr 请求、axios 还是 jquery ajax。
但是当我使用 python virtualenv 或 curl 发送相同的数据时,响应为 200 并且状态成功。
我究竟做错了什么?为什么 POST 在使用 javascript 发送时失败,而在使用 python 或 curl 发送时通过?
var xhr = new XMLHttpRequest();
xhr.open("POST", 'http://localhost:3000/api/login/', true);
xhr.send(JSON.stringify({
user: "myusername",
password: "mypassword"
}));
// result: {status: "error", message: "Unauthorized"}
Run Code Online (Sandbox Code Playgroud)
我发送没有标头的登录请求,因为:
xhr.setRequestHeader('Content-Type', 'application/json');
Run Code Online (Sandbox Code Playgroud)
我是 TypeScript/JavaScript 的新手,我正在尝试使用 TypeScript 和 XMLHttpRequest 2 对二进制文件的不同部分执行多部分范围请求 ( RFC 7233 )。
根据RFC 7233,多部分/字节范围响应具有以下内容:
HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Length: 1741
Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES
--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 500-999/8000
...the first range...
--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 7000-7999/8000
...the second range
--THIS_STRING_SEPARATES--
Run Code Online (Sandbox Code Playgroud)
我看到两个选项:
XMLHttpRequest.responseType = "arraybuffer"),将边界字符串转换为二进制,在二进制数据数组中搜索由边界字符串转换为二进制的每个正文部分,提取每个有效负载的标头并将它们转换为字符串?或者,XMLHttpRequest.responseType = "text"),识别由边界字符串分隔的正文部分,并将有效负载转换为二进制数据数组?在 javascript/typescript 中处理/解析此类响应的正确方法是什么,因为响应包含多个正文部分,每个部分都有自己的标头(字符串)和有效负载(二进制)?
有没有更简单的方法?
欢迎任何建议。谢谢!
xmlhttprequest 是否有最大超时?目前无法在 chrome 中设置超过 1 分钟的超时值。让 xmlHttpRequest: XMLHttpRequest = new XMLHttpRequest(); xmlHttpRequest.timeout = 120000;
我正在尝试制作一个XMLHttpRequest从外部文件加载 HTML 并将文件内容插入到div.
当我运行该函数时,它会在所有不够充分的正文中插入 HTML。
我的代码:
--------------------------> HTML <--------------------- -----
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="shit.js" charset="utf-8"></script>
<link rel="stylesheet" href="index.css">
<title>Test</title>
</head>
<body>
<button type="button" name="button" onclick="send()">Click me</button>
<div class="view" id="view"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
--------------------------> CSS <--------------------- -----
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="shit.js" charset="utf-8"></script>
<link rel="stylesheet" href="index.css">
<title>Test</title>
</head>
<body>
<button type="button" name="button" onclick="send()">Click me</button>
<div class="view" id="view"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
--------------------------> JS <--------------------- -----
.view {
margin-top: 5vh;
height: 15vh;
width: 80vw; …Run Code Online (Sandbox Code Playgroud) 我正在使用静态文件服务器加载本地.jpg图像。
let xhr = new XMLHttpRequest();
this.isLoaded = false;
this.image = new Image();
xhr.open("GET", "http://localhost:8080/testing/ressources/" + url, true);
xhr.responseType = 'blob';
this.textureBuffer = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, this.textureBuffer);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array([255, 0, 0, 255]));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
xhr.onload = (e) => {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
let blob = new Blob([xhr.response], {
type: 'image/jpg'
});
let urlCreator = window.URL || window.webkitURL;
this.image.src = urlCreator.createObjectURL(blob);
gl.bindTexture(gl.TEXTURE_2D, …Run Code Online (Sandbox Code Playgroud) 我看到这个错误:“[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated 因为它对最终用户的体验有不利影响。有关更多帮助,请查看https://xhr.spec.whatwg.org/。”,在此代码:
var request;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else{
request = new ActiveXObject("Microsoft.XMLHTTP");
}
request.open('GET', 'http://www.mywebsite.com', false);
request.send();
Run Code Online (Sandbox Code Playgroud)
我应该用什么替换指令,因为它们已被弃用?
我想知道如何向 pastebin.com 发出帖子请求。他们有一个易于理解的API 文档,但是每当我运行一个简单的 POST 请求时,我总是得到Bad API request, invalid api_option.
我正在使用提出请求所需的最低限度,我不确定我可能做错了什么。
var request = new XMLHttpRequest;
request.open("POST", "https://pastebin.com/api/api_post.php?api_dev_key=mykey&api_option=paste&api_paste_code=hi", false);
request.send();
request.response;
xmlhttprequest ×10
javascript ×7
ajax ×3
html ×3
browser ×1
download ×1
jquery ×1
multipart ×1
pastebin ×1
php ×1
post ×1
request ×1
rocket.chat ×1
selenium ×1
typescript ×1
webgl ×1