当前位置: 首页 > 面试题库 >

jQuery等同于XMLHttpRequest的上载吗?

黄元章
2023-03-14
问题内容

使用HTML5的File
API时,上传是通过中称为的对象upload进行的XMLHttpRequest。这是我正在使用的教程(以及Google缓存镜像,因为它目前处于关闭状态)。这是相关的部分:

// Uploading - for Firefox, Google Chrome and Safari
xhr = new XMLHttpRequest();

// Update progress bar
xhr.upload.addEventListener("progress", function (evt) {

如您所见,为跟踪上传进度,该XMLHttpRequest对象具有一个名为的属性upload,我们可以添加一个事件处理程序。

我的问题是: jQuery是否等效?
。我试图让代码尽可能地干净和跨浏览器兼容,因为只要Microsoft认为这是一个好主意(尽管听起来好像是在2012年或2013年)。


问题答案:

这是我想出的解决此问题的方法。$ .ajax()调用允许提供回调以生成XHR。我只是在调用请求之前生成一个请求,进行设置,然后创建一个闭包以在$
.ajax()需要它时将其返回。如果他们只是通过jqxhr授予访问权限,那会容易得多,但事实并非如此。

var reader = new FileReader();

reader.onloadend = function (e) {
    var xhr, provider;

    xhr = jQuery.ajaxSettings.xhr();
    if (xhr.upload) {
        xhr.upload.addEventListener('progress', function (e) {
            // ...
        }, false);
    }   
    provider = function () {
        return xhr;
    };

    // Leave only the actual base64 component of the 'URL'
    // Sending as binary ends up mangling the data somehow
    // base64_decode() on the PHP side will return the valid file.
    var data = e.target.result;
    data = data.substr(data.indexOf('base64') + 7);

    $.ajax({
        type: 'POST',
        url: 'http://example.com/upload.php',
        xhr: provider,
        dataType: 'json',
        success: function (data) {
            // ...
        },  
        error: function () {
            // ...
        },  
        data: {
            name: file.name,
            size: file.size,
            type: file.type,
            data: data,
        }   
    }); 
};  
reader.readAsDataURL(file);


 类似资料:
  • 问题内容: 这个功能有jQuery版本吗? 字符串 strip_tags (字符串$ str [,字符串$ allowable_tags]) 从字符串中剥离所有标签和标签内的内容,但允许标签字符串中定义的标签和内容除外。 喜欢: 从: 问题答案: 要删除 标记,而不 除去 content ,这就是PHP的行为,您可以执行以下操作:

  • 问题内容: 我试图找到与此JavaScript方法调用等效的jQuery: 我已经达到: 但这并不能达到与JavaScript方法的最后一个参数相同的结果-一个布尔值,指示是否应在捕获或冒泡阶段执行事件处理程序根据我对理解被排除在外。 如何使用jQuery指定该参数或以其他方式实现相同的功能? 问题答案: 并非所有浏览器都支持事件捕获(例如,InternetExplorer版本低于9)不支持事件捕

  • 问题内容: 我有一个使用的脚本,但没有使用jQuery中的其他任何脚本。我想通过删除jQuery依赖项来减轻它的负担。 如何在不使用jQuery的情况下实现自己的功能?我知道使用会有所不同,因为在加载所有图像,帧等之后会触发。 问题答案: 有一个基于标准的替代品,尽管IE8不支持,但超过98%的浏览器都支持它: jQuery的本机功能比window.onload复杂得多,如下所示。

  • 问题内容: 像许多其他网站一样,我的网站使用的是jQuery。打开开发人员工具时,我看到一条警告,指出XMLHTTPRequest是 不推荐使用,因为它对最终用户的体验有不利影响。 我继续阅读了部分文档,但这是相当技术性的。有人可以简单地解释从XMLHTTPRequest转换为WHATWG的后果吗?它说发生在2012年。 此外,该文档还说,正在从Web平台删除工作人员外部的Synchronous

  • 问题内容: 正如我所知道的,我对xhr返回事件感到困惑, _onreadystatechange- > readyState == 4_与onload 之间并没有太大区别,这是真的吗? 要么 问题答案: 应该是同一回事。是在XMLHttpRequest 2中添加的,但自原始规范以来就存在。

  • 问题内容: 我正在尝试从“远程”网站获取一些json数据。我在99000端口上运行Web服务,然后在99001端口上启动网站(http:// localhost:99001 / index.html)。 我收到以下消息: 即使以HTML文件启动网页,我也会得到以下信息: Web服务返回数据。我尝试捕获这样的数据项: 我正在尝试获得以下结构: 您知道我为什么会收到此错误吗? 问题答案: 您无法执行X