-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. 如何在Symfony3中创建AJAX请求?
- 3. Symfony2,创建ajax请求
- 4. 如何使用mySQL在移动设备上创建Ajax请求
- 5. 如何动态创建使用jQuery ajax请求的对象
- 6. 触发的jQuery 1.5 Ajax请求手动
- 7. 从Ajax请求创建JavaScript数组
- 8. 复选框创建多个AJAX请求
- 9. FOSUser创建用户的AJAX请求
- 10. 如何AJAX请求
- 11. 手动POST请求
- 12. 如何手动创建TypeTag?
- 13. 如何手动创建all.js?
- 14. 如何手动创建UISplitView?
- 15. 如何手动创建SiftingAppender
- 16. 如何在cakephp中创建多个ajax请求
- 17. 如何在JS Popup中创建AJAX请求?
- 18. 如何为Ajax请求创建Rails操作?
- 19. 如何通过服务创建ajax请求?
- 20. 动态创建AJAX手风琴控制
- 21. 如何防止ajax请求?
- 22. 如何从Ajax请求
- 23. 如何在Ajax请求
- 24. 如何停止Ajax请求
- 25. 如何做Ajax请求?
- 26. 创建SOAP请求
- 27. 手动请求HAML文件
- 28. 手柄点击链接后,Ajax请求
- 29. 烬帮手等待一个Ajax请求
- 30. PHP SOAP如何创建嵌套请求
为什么你的意思是通过手动?从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