-3
A
回答
0
如果你想要的是一个基本的要求,那么你可以很容易地做到这一点,而不与功能的任何图书馆发现这里http://www.quirksmode.org/js/xmlhttp.html
function sendRequest(url,callback,postData) {
var req = createXMLHTTPObject();
if (!req) return;
var method = (postData) ? "POST" : "GET";
req.open(method,url,true);
req.setRequestHeader('User-Agent','XMLHTTP/1.0');
if (postData)
req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
req.onreadystatechange = function() {
if (req.readyState != 4) return;
if (req.status != 200 && req.status != 304) {
// alert('HTTP error ' + req.status);
return;
}
callback(req);
}
if (req.readyState == 4) return;
req.send(postData);
}
var XMLHttpFactories = [
function() {return new XMLHttpRequest()},
function() {return new ActiveXObject("Msxml2.XMLHTTP")},
function() {return new ActiveXObject("Msxml3.XMLHTTP")},
function() {return new ActiveXObject("Microsoft.XMLHTTP")}
];
function createXMLHTTPObject() {
var xmlhttp = false;
for (var i=0;i<XMLHttpFactories.length;i++) {
try {
xmlhttp = XMLHttpFactories[i]();
}
catch (e) {
continue;
}
break;
}
return xmlhttp;
}
0
我具有你的意思猜测,但基本上,您使用XMLHttpRequest
object做ajax请求。这是其他浏览器采用的微软创新技术,目前正在进行标准化。它在现代浏览器中看起来像这样:
function sendRequest() {
var request = new XMLHttpRequest();
request.open('GET', '/Home/Start', false);
request.onreadystatechange = handleStateChange;
request.send(null);
function handleStateChange() {
if (request.readyState === 4) {
// The request is complete; did it work?
if (this.status >= 200 && this.status < 300) {
// Yes, you can use the data on request.responseText
// or (for requests with XML replies) request.responseXML
// In our case, let's say we want to put all of the text
// into the element with the `id` "js_script":
var elm = document.getElementById("js_script");
elm.innerHTML = request.responseText;
}
}
}
}
这显然很简单。在旧的浏览器,你要做的一对夫妇检查围绕创建对象(new XMLHttpRequest
在IE7不工作,例如,但也有办法做到这一点在IE7)
围绕创建并发症旧版浏览器上的对象是我推荐使用诸如jQuery,Prototype,YUI,Closure或any of several others之类的任何正常JavaScript库的许多原因之一。他们可以平滑浏览器的差异,增加许多实用功能,并让您专注于完成特定任务,而不用担心(比如说)HTTP状态代码。这并不是说没有图书馆没有时间和地点去做事情 —当然有 —就是这样,通常情况下,建立在别人的工作之上,而不是完全靠自己完成。
相关问题
- 1. 创建Ajax请求
- 2. 在创建手动Ajax请求时使用jquery-rails(ujs)
- 3. 如何在Symfony3中创建AJAX请求?
- 4. 如何在REDX中创建AJAX请求
- 5. 如何使用jQuery创建AJAX请求
- 6. retrofit2.0:创建和执行请求手动
- 7. Symfony2,创建ajax请求
- 8. 如何手动创建http/https POST请求?
- 9. 如何使用mySQL在移动设备上创建Ajax请求
- 10. 如何动态创建使用jQuery ajax请求的对象
- 11. 如何创建一个Ajax请求,同时背景动画
- 12. 触发的jQuery 1.5 Ajax请求手动
- 13. JSF Ajax请求 - 如何停止Ajax请求后滚动顶部
- 14. 如何创建xmlhttp请求?
- 15. 棘手的AJAX请求
- 16. 如何AJAX请求
- 17. jquery帮助创建ajax请求
- 18. 复选框创建多个AJAX请求
- 19. FOSUser创建用户的AJAX请求
- 20. 从Ajax请求创建JavaScript数组
- 21. 手动POST请求
- 22. 手动构建SOAP服务请求
- 23. 如何从Observable手动请求事件?
- 24. 如何手动请求Asp.Net页面?
- 25. 如何手动创建UISplitView?
- 26. 如何手动创建TypeTag?
- 27. 如何手动创建all.js?
- 28. 如何手动创建tf.Summary()
- 29. AJAX请求 - 如何查看请求?
- 30. 如何阻止创建新会话的AJAX请求
为什么你的意思是通过手动?从ASP或从JavaScript?你也可以使用类似jQuery的库吗? – GillesC 2012-04-27 16:45:01
当我在JavaScript中遇到问题时,我不会通过在线查找来“发现”如何执行该操作,而是查找*如何执行操作。可悲的是,绝大多数JS程序员都懒得做这个,而是使用jQuery来代替。 – 2012-04-27 16:45:16
@Kolink:jQuery很好的一点是跨浏览器兼容性。如果你弄清楚了一个问题,但它只适用于Chrome,不适用于Firefox?加上在香草JavaScript中的AJAX是丑陋的:-P – 2012-04-27 16:47:27