问题标签 [xmlhttprequest-level2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2656 浏览

xmlhttprequest - CORS 请求已预检,但似乎不应该

以下跨域 POST 请求的内容类型为 multipart/form-data,并且仅预检了简单的标头。根据 W3C 规范,除非我读错了,否则不应预检。我已经确认这发生在 Chrome 27 和 Firefox 10.8.3 中。我还没有测试任何其他浏览器。

以下是请求标头等:

这是 OPTIONS (预检)请求:

规范似乎很清楚:

更新:这里有一些简单的客户端代码可以重现这个:

有谁知道为什么要预检?

0 投票
0 回答
170 浏览

javascript - 无法使用 xhr2 和网络工作者上传文件和变量

我尝试使用 XHR2 和网络工作者创建代码来上传文件。我想我应该使用 web workers ,所以如果文件很大,网页不会冻结。

这不起作用有两个原因,我以前从未使用过网络工作者,并且我想使用相同的 xhr 同时将文件和 vars 发布到服务器。当我说 vars 时,我的意思是文件名和一个 int。

这是我得到的

客户端

工作人员内部(fileupload.js 文件)

我很困惑。我无法向服务器发送任何内容。我没有从工人那里得到任何反馈。我什至不知道数据是否发送到 fileupload.js。服务器端不插入。

可以同时发送文件和文本吗?我错过了什么?

我需要将 text 和 int 与文件一起传递,因此服务器端不仅会上传文件,而且如果文件上传成功,还会将 int 和 text 插入数据库。仅使用 formData 和 xhr 就很容易,但是,将网络工作者放在中间,我无法做到。

另外,我可以使用 Transferable Objects 来加快速度吗?所有主流浏览器都支持 Transferable Objects 吗?

提前致谢

0 投票
1 回答
2278 浏览

javascript - 如何获取使用 XMLHttpRequest (XHR2) 下载的 PNG 的像素数据

我正在使用来自 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data的代码

我正在使用它下载一个 png 文件,然后我想在 Canvas 元素中显示该文件。我意识到有更简单的方法可以做到这一点,但我需要能够操作像素,所以我真的很想将像素数据放在 TypedArray 中,我也尝试使用常规 DOM Image 对象加载它,将其绘制到画布并使用 getImageData() 但它太慢(它是一个大图像) - 所以现在我正在尝试这种方法,我从负载中得到的是我假设是压缩数据,所以我的问题是 - 有没有快速的方法解压缩/膨胀此数据以获取图像像素数据,还是我尝试这个完全错误?

0 投票
1 回答
112 浏览

javascript - 无法创建 FormData 对象

我试图创建表单数据但我不能

它警报不正常

我现在应该做什么?

我检查了该对象的官方 mdn 文档,但一无所获

0 投票
1 回答
183 浏览

php - 上传超过 300K 的照片时,xmlHttpRequest 级别 2 多次启动然后失败

我不想做任何不寻常的事情,我只需要一个简单的带有 HTML5 进度条的 ajax 照片上传,所以我的代码很普通:

up.php:

一切都很顺利,除了尝试上传超过 300 KB 的照片时,进度条达到 70% 然后重新开始达到 65% 或者重新开始,最后失败了!!!

我尝试将以下内容添加到 .htaccess 文件中: php_value upload_max_filesize 20M php_value post_max_size 20M php_value max_execution_time 200 php_value max_input_time 200

但没有任何改变。

0 投票
2 回答
862 浏览

javascript - 如何知道哪个当在一个内定义了几个时提交
?

我想submitForm()基于XMLHttpRequest和实现以下简单的 JavaScript 函数FormData。此函数在第一个上运行良好,<form>但在第二个上失败:该函数应该使用input.formaction而不是form.action.

如何检测按下<input>并检索相应的formaction

(大多数 SO 答案建议使用框架(如 jquery)进行此类处理。但我认为仅学习纯 JavaScript 比学习 JS 框架更容易。如果您确信可以使用框架更简单地编写此代码段,请提出你的版本。还请解释为什么你建议的框架在这​​种情况下是相关的/相关的/合适的。我可能决定学习你最喜欢的 JS 框架......编辑:我发现了这个类似的问题:JQuery get formaction and formmethod

(在阅读XMLHttpRequest to Post HTML Form使用 XMLHttpRequest 发送 POST 数据和优秀的MDN 文档之后,我已经实现了这个片段。)

0 投票
1 回答
614 浏览

javascript - 如何从我的 XHR 回调中引用 `postMessage()` 函数?

文件上传完美,我无法让progessload事件回调

我在一个 JavaScript 文件中有以下内容作为我的 WebWorker 代码:

上传文件工作者.js

该函数完美运行postMessage(e.data);onmessage

回调postMessage(m);中的永远不会发生。xhr.upload.addEventListeners()在我尝试将这些函数移动到WebWorker代码中之前,它们运行良好。

这是范围问题吗? 如果是这样,我如何为调用添加前缀以使其正常工作。?

为了完整起见,这里是我定义我的实例Worker并开始它的方式。

同样,文件的实际上传效果很好,我不知道如何postMessage();从回调内部xhr调用。

0 投票
1 回答
484 浏览

javascript - 我可以使用 Angular 的 $httpBackend 测试常规 XMLHttpRequests 吗?

我有一个 AngularJS 应用程序,它需要文件上传,并且由于$http不支持的特殊功能XMLHttpRequest.upload,我必须使用 XMLHttpRequest 执行文件上传。

我的问题是:我可以使用 对$httpBackend通过 发出的请求进行单元测试new XMLHttpRequest()吗?

我做了一些测试,但目前$httpBackend正在抛出错误。没有调用$httpBackend.flush()它就抱怨不满意的请求,但添加flush, 只是导致“无待处理请求”错误。

广泛使用搜索引擎并没有为我提供答案,所以你能帮我吗?

0 投票
2 回答
11940 浏览

javascript - 是否可以为新的 FormData (XHR2) 对象或解决方法设置接受字符集

这是示例代码(http://jsfiddle.net/epsSZ/1/):

HTML:

JS:

当我通过标准表单提交提交这种旧方式时,请求有效负载如下所示:

但是当我提交这种 AJAX 方式时,它看起来有点不同:

如您所见,在前一种情况下,有一些字符被字符实体替换,但在使用的情况下,FormData有纯字符串,这当然很好,因为它是 utf-8,但有没有可能让它表现得像标准表单提交?

0 投票
0 回答
754 浏览

html - 将 XMLHttpRequest 与本地文件一起使用时,CORS 是否有解决方法?

我想使用Exif.js从本地文件中读取 JPEG EXIF 标签。但是,javascript lib 用于XMLHttpRequest将 JPG 文件读取为BinaryFile

当我使用时, <input type="file">我得到一个 HTML5File对象,我可以使用 a 读取它,FileReader但我不知道如何将其转换为 a BinaryFile

但是我也使用了 AppGyver Steroids (PhoneGap),它为我的页面提供服务http://localhost/index.html,当我尝试使用 Exif.js 时,我收到了这个 CORS 错误:

XMLHttpRequest cannot load data:image/jpeg;base64,/9j/4X2cRXhpZgAASUkqAAgAAAAOAA8BAgAKAAAAtgAAABABAgAI…N6gn14dm6BmJyMdYaMhX16hI+HgIWLj5aWkJOaiHF7hoV+dnBwc3Jzbm14hGlZcIaWlXFEU3OB. Received an invalid response. Origin 'http://localhost:4000' is therefore not allowed access.

有什么方法可以配置 XmlHttpRequest 以提供本地 File 对象而不会出现 CORS 错误?