-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