根据我的理解,尽可能重用XmlHttpRequest对象是最佳实践.不幸的是,我很难理解为什么.似乎通过尝试重用XHR对象会增加代码复杂性并引入可能的浏览器不兼容性.那么为什么这么多人推荐呢?
经过一些研究,我能够得出这个可能的解释清单:
但我仍然有点怀疑.这些原因中的任何一个都有效吗?如果没有,有什么原因?
我面临着我的代码问题,任何人都可以告诉我这个来源有什么问题 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) 我开始使用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上传文件.上传文件后,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开始处理文件
检查这个还有其他可能吗?
我正在进行同步ajax调用(ajax设置async:false).这很好用.
现在我正试图在phantomJS中为此编写一个自动测试,我收到了这个错误
NETWORK_ERR: XMLHttpRequest Exception 101
Run Code Online (Sandbox Code Playgroud)
我检查了我的服务日志,似乎服务没有得到任何请求.
我有一个带有很多外键的SQL Server 2008表,当在屏幕上打开它时,加载所有相关数据需要很长时间,比如10秒......这是Fiddler显示加载时间的图表,根本不可接受
我正在使用Eric Erhardt的技术来创建域服务并通过加载数据.我的问题是,如果我能以某种方式优化这些数字?我不明白为什么每个相关数据必须是一个请求,只是在没有域服务的情况下使一个正常实体在一个请求中加载所有相关数据.
谢谢
SOAP over HTTP是HTTP上的XML的一个子集,因为我假设SOAP也是一个确认模式(SOAP模式)的XML吗?我假设可以使用GET或POST方法访问XML over HTTP服务.SOAP over HTTP总是使用POST方法吗?对于基于HTTP的XML,我假设缺点是必须与所有使用者共享模式文件,而在SOAP over HTTP的情况下,它将是单个WSDL文件.是否有可能帮助让我知道一方面的差异和优势?
我知道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表单,因为表单数据相当大,并且是动态创建的.
上面的代码有问题吗?我错过了什么?我只是不知道如何实际将数据作为下载发送到客户端.
我们正在通过我们的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
我已经设定 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) xmlhttprequest ×10
javascript ×6
ajax ×5
axios ×1
cors ×1
django ×1
google-api ×1
http ×1
jquery ×1
phantomjs ×1
post ×1
redux ×1
service ×1
soap ×1
sql-server ×1
upload ×1
web-services ×1