我需要发送请求以采取行动 /Home/Start
元素 id 'js_script' 中的响应集。
我找不到怎么做。
如果您想要的只是一个基本请求,那么您可以轻松地完成它,而无需任何具有此处功能的库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;
}
我不得不猜测您的意思,但基本上,您使用该XMLHttpRequest
对象来执行 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 上有一些方法可以做到这一点。)
在旧浏览器上创建对象的复杂性是我推荐使用任何像样的 JavaScript 库(如jQuery、Prototype、YUI、Closure或其他任何一个)的众多原因之一。它们为您消除浏览器差异,添加许多实用功能,让您专注于完成特定任务,而不是担心(比如说)HTTP 状态代码。这并不是说没有图书馆就没有时间和地点——当然有——只是通常情况下,一个人在别人的工作上比完全靠自己更有效率。