标签: xmlhttprequest

我为什么要重用XmlHttpRequest对象?

根据我的理解,尽可能重用XmlHttpRequest对象是最佳实践.不幸的是,我很难理解为什么.似乎通过尝试重用XHR对象会增加代码复杂性并引入可能的浏览器不兼容性.那么为什么这么多人推荐呢?

经过一些研究,我能够得出这个可能的解释清单:

  1. 创建的对象越少意味着垃圾收集越少
  2. 重用XHR对象可减少内存泄漏的可能性
  3. 创建新XHR对象的开销很高
  4. 浏览器能够在引擎盖下执行某种网络优化

但我仍然有点怀疑.这些原因中的任何一个都有效吗?如果没有,有什么原因?

javascript ajax xmlhttprequest

20
推荐指数
1
解决办法
4910
查看次数

访问控制允许来源不被允许

可能重复:
为什么我在这里看到"Access-Control-Allow-Origin不允许来源"错误?

我面临着我的代码问题,任何人都可以告诉我这个来源有什么问题 http:// localhost:8080是不允许的Access-Control-Allow-Origin

var http = new getXMLHttpRequestObject();
var url = "http://gdata.youtube.com/action/GetUploadToken";
var sendXML = '<?xml version="1.0"?><entry xmlns="http://www.w3.org/2005/Atom"'+
    'xmlns:media="http://search.yahoo.com/mrss/'+
    'xmlns:yt="http://gdata.youtube.com/schemas/2007">'+
    '<media:group><media:title type="plain">My First API</media:title>'+
    '<media:description type="plain">First API</media:description>'+
    '<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People</media:category>'+
    '<media:keywords>first, api</media:keywords></media:group></entry>';
http.open("POST", url, true);
http.setRequestHeader("Authorization", "AuthSub token=" + AccessToken);
http.setRequestHeader("X-GData-Key", "key="+ dev_key);
http.setRequestHeader("Content-Type", "application/atom+xml; charset=UTF-8");

http.onreadystatechange = function() {
    if(http.readyState == 4) {
        alert(http.responseXML);
    }
}
http.send(sendXML);
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest cors

20
推荐指数
0
解决办法
5万
查看次数

jQuery $ .ajax或$ .load是否允许responseType arrayBuffer?

我开始使用Web Audio API,只是想知道是否可以使用jQuery的$ .ajax或$ .load函数来生成接收音频数据的XMLHttpRequest.$ .ajax或$ .load是否支持responseType = arrayBuffer?

编辑:

好的,所以这就是我到目前为止所拥有的:

function loadAudio() {
    $.ajax({
            url: sourceUrl
        }).done(function(response){
            return response;
        })
    }
Run Code Online (Sandbox Code Playgroud)

但我需要返回一个ArrayBuffer.那么如何将响应转换为ArrayBuffer?

ajax jquery xmlhttprequest

20
推荐指数
3
解决办法
1万
查看次数

XMLHttpRequest Level 2 - 确定上传是否完成

我正在使用ajax上传文件.上传文件后,php应该检查它(哑剧,大小,病毒(clamscan)等) - 对于较大的文件,这需要几秒钟.当文件上传时,HTML5 <progress>正在填充,当文件准备好并且PHP开始检查时,进度应该切换到不确定.我认为对的方式来做到这一点(这两者都不能正常工作):

检查upload.onload事件

xhr.upload.addEventListener("load", function (e) {
    $("#uploadprogress").attr("value", false);
    $("#uploadprogress").attr("max", false);
    $("#progress").text("Checking file...");
});
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为onload-event在请求准备好时会激活,而不是在上传准备就绪时触发.

检查上传进度百分比= 100%

xhr.upload.addEventListener("progress", function (e) {
    if (e.lengthComputable && e) {
        p = (e.loaded / e.total);
        if (p==1) {
            $("#uploadprogress").attr("value", false);
            $("#uploadprogress").attr("max", false);
            $("#progress").text("Checking file...");
        } else {
            var percent = Math.ceil(p * 1000) / 10;
            $("#uploadprogress").val(e.loaded);
            $("#uploadprogress").attr("max", e.total);
            $("#progress").text("Uploading... " + percent + "%");
        }
   }
}
});
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为上传百分比有时会停止在大约.97%,尽管上传完成,PHP开始处理文件

检查这个还有其他可能吗?

javascript ajax upload xmlhttprequest

20
推荐指数
1
解决办法
2万
查看次数

Phantom JS同步AJAX请求:NETWORK_ERR:XMLHttpRequest异常101

我正在进行同步ajax调用(ajax设置async:false).这很好用.

现在我正试图在phantomJS中为此编写一个自动测试,我收到了这个错误

NETWORK_ERR: XMLHttpRequest Exception 101 
Run Code Online (Sandbox Code Playgroud)

我检查了我的服务日志,似乎服务没有得到任何请求.

javascript ajax xmlhttprequest phantomjs

20
推荐指数
1
解决办法
1万
查看次数

LightSwitch相关数据请求优化

我有一个带有很多外键的SQL Server 2008表,当在屏幕上打开它时,加载所有相关数据需要很长时间,比如10秒......这是Fiddler显示加载时间的图表,根本不可接受在此输入图像描述

我正在使用Eric Erhardt的技术来创建域服务并通过加载数据.我的问题是,如果我能以某种方式优化这些数字?我不明白为什么每个相关数据必须是一个请求,只是在没有域服务的情况下使一个正常实体在一个请求中加载所有相关数据.

谢谢

sql-server xmlhttprequest visual-studio-lightswitch

20
推荐指数
1
解决办法
765
查看次数

XML over HTTP和SOAP over HTTP之间的区别

SOAP over HTTP是HTTP上的XML的一个子集,因为我假设SOAP也是一个确认模式(SOAP模式)的XML吗?我假设可以使用GET或POST方法访问XML over HTTP服务.SOAP over HTTP总是使用POST方法吗?对于基于HTTP的XML,我假设缺点是必须与所有使用者共享模式文件,而在SOAP over HTTP的情况下,它将是单个WSDL文件.是否有可能帮助让我知道一方面的差异和优势?

service soap web-services http xmlhttprequest

20
推荐指数
1
解决办法
5万
查看次数

使用XMLHttpRequest提示文件下载

我知道jQuery的ajax方法无法处理下载,我不想添加一个jQuery插件来执行此操作.

我想知道如何使用XMLHttpRequest发送POST数据来下载文件.

这是我尝试过的:

var postData = new FormData();
postData.append('cells', JSON.stringify(output));

var xhr = new XMLHttpRequest();
xhr.open('POST', '/export/', true);
xhr.setRequestHeader("X-CSRFToken", csrftoken);
xhr.responseType = 'arraybuffer';
xhr.onload = function (e) {
    console.log(e);
    console.log(xhr);
}
xhr.send(postData);
Run Code Online (Sandbox Code Playgroud)

我正在使用Django,该文件似乎成功发送回客户端.在Chrome的网络标签中,我可以在预览标签中看到乱码(我期待).但我想发回一个zip文件,而不是zip文件的文本表示.这是Django的后端:

wrapper = FileWrapper(tmp_file)
response = HttpResponse(wrapper, content_type='application/zip')
response['Content-Disposition'] = "attachment; filename=export.zip"
response['Content-Length'] = tmp_file.tell()
return response
Run Code Online (Sandbox Code Playgroud)

我已经搜索了几个小时,但没有找到关于如何使用XMLHttpRequests执行此操作的正确示例.我不想用POST操作创建一个合适的html表单,因为表单数据相当大,并且是动态创建的.

上面的代码有问题吗?我错过了什么?我只是不知道如何实际将数据作为下载发送到客户端.

javascript django post xmlhttprequest

20
推荐指数
2
解决办法
3万
查看次数

没有'Access-Control-Allow-Origin'标题,可恢复上传

我们正在通过我们的App Engine应用程序中的云存储JSON API生成可恢复的上传URL,这些应用程序可用于移动设备和Web应用程序.在Web应用程序中,使用XmlHttpRequest上传具有可恢复上传URL的文件,我们收到以下错误:

XMLHttpRequest无法加载https://www.googleapis.com/upload/storage/v1beta2/b/ ...请求的资源上没有"Access-Control-Allow-Origin"标头.因此,不允许来源" https://ourapp.appspot.com "访问.

在Chrome开发人员工具中,网络日志显示第一个OPTIONS请求,其中包含相应的"Origin"请求标头和"Access-Control-Allow-Origin"响应标头,但后面提到的PUT请求失败.

我们的桶上的cors xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
    <CorsConfig>
      <Cors>
        <Origins>
          <Origin>*</Origin>
        </Origins>
        <Methods>
          <Method>PUT</Method>
          <Method>GET</Method>
          <Method>POST</Method>
          <Method>HEAD</Method>
          <Method>DELETE</Method>
          <Method>OPTIONS</Method>
        </Methods>
        <ResponseHeaders>
          <ResponseHeader>*</ResponseHeader>
        </ResponseHeaders>
        <MaxAgeSec>1800</MaxAgeSec>
      </Cors>
    </CorsConfig>
Run Code Online (Sandbox Code Playgroud)

欢迎任何建议.

谢谢.

google-app-engine xmlhttprequest google-api google-cloud-storage

20
推荐指数
2
解决办法
5444
查看次数

axios库中的超时功能无效

我已经设定 axios.defaults.timeout = 1000;

我停止了为我提供API的服务器.

但发送请求后超时需要1秒以上.

这是我的请求的样子:

import axios from 'axios';
axios.defaults.timeout = 1000;

return axios.post(`${ROOT_URL}/login/${role}`, creds).then((response) => {
      console.log(response);

        if(response.status === 200) {
          // If login was successful, set the token in local storage
          localStorage.setItem(`${role}_log_toks`, JSON.stringify(response.data));

          // Dispatch the success action
          dispatch(receiveLogin(response.data));

          return response;
        }
      }).catch(err => {
        console.log(err);
        // If there was a problem, we want to
        // dispatch the error condition
        if(err.data && err.status === 404) {
          dispatch(loginError(err.data));
        } else {
          dispatch(loginError('Please check your network connection and …
Run Code Online (Sandbox Code Playgroud)

javascript ajax xmlhttprequest redux axios

20
推荐指数
5
解决办法
3万
查看次数