Acync JS HTTP请求通知请求
Acync JS HTTP Request Advice Request
我正在为我正在做的一个项目创建一个javascript库,该库根据你提供的参数进行rest调用。这是该项目的第二天,我正在寻求建议。如果我将我的请求设置为async,它会返回我的请求,但我无法访问对象值,如果我在调用中将其设置为false,它将返回一个对象。
我阅读了关于async js请求的堆栈文章,似乎无法理解回调和承诺。
这项工作:request.open("DELETE",url,false);
这不会:request.open("DELETE",url,true);
(function(window){
function defineCynergi(){
var Cynergi = {};
Cynergi.get = function(url){
var request = makeHttpObject();
request.open("GET", url, false);
request.send(null);
return JSON.parse(request.responseText);
}
Cynergi.delete = function(url){
var request = new XMLHttpRequest();
request.open("DELETE", url, false);
request.setRequestHeader('Accept', 'application/localhost.com:3000+json; version=1');
request.send();
deleteStatus = request.statusText;
return deleteStatus;
}
Cynergi.insert = function(url, data){
var request = new XMLHttpRequest();
request.open("POST", url, false);
request.setRequestHeader('Accept', 'application/localhost.com:3000+json; version=1');
request.send(JSON.stringify(data));
sentStatus = request.statusText;
return sentStatus;
}
Cynergi.update = function(url, data){
var request = new XMLHttpRequest();
request.open("PATCH", url, false);
request.setRequestHeader('Accept', 'application/localhost:3000+json; version=1');
request.send(JSON.stringify(data));
updateStatus = request.statusText;
console.log(request);
return updateStatus;
}
return Cynergi;
}
if(typeof(Cynergi) === 'undefined'){
window.Cynergi = defineCynergi();
}
})(window);
function makeHttpObject() {
try {return new XMLHttpRequest();}
catch (error) {}
try {return new ActiveXObject("Msxml2.XMLHTTP");}
catch (error) {}
try {return new ActiveXObject("Microsoft.XMLHTTP");}
catch (error) {}
throw new Error("Could not create HTTP request object.");
}
您应该这样做:
var request = new XMLHttpRequest();
request.open('GET', yourURI, true); // true = async
request.send();
request.onreadystatechange(function () {
if(request.readyState === 4){
/*ENTER CODE THAT SHOULD BE EXECUTED WHEN REQUEST IS DONE
(OPTIONAL)*/
switch(request.status) {
case 200: //DO STUFF
case 404: //DO OTHER STUFF
}
}
});
或者这个:
var request = new XMLHttpRequest();
request.open('GET', yourURI, true);
request.addEventListener('load', function () {
//CODE THAT SHOULD BE EXECUTED WHEN SUCCES.
});
request.addEventListener('error', function () {
//CODE THAT SHOULD BE EXECUTED WHEN ERROR RESPONE.
});
request.send();
相关文章:
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Firebase2(Firebase.google.com)推送通知-从外部管理
- Ajax请求文档就绪会导致jquery加载缓慢
- Acync JS HTTP请求通知请求
- Zendesk app.js示例用于发送外部电子邮件通知或AJAX请求
- URL中用户@的几个请求导致“;违反政策通知;来自Google AdSense
- 无法发送应用请求,显然已发送,但未显示通知用户
- 通过通知 URL 在 Meteor 中获取 POST 请求
- 在chrome中请求通知权限失败
- $http请求的后台处理通知
- Facebook请求对话框未发送通知
- 自动通知在数据库的变化:类似于facebook的朋友请求
- 如何从请求中检索通知/数据
- 从iframe发送POST请求,通知父窗口href
- D3.js -在AJAX请求期间添加加载通知