我正在尝试让这个函数起作用,然后请求参数url
然后将responseText发送到callback
这是一个函数。
它似乎只到readyState 1
(感谢Firebug命令)。
这是:
function Request(url, callback){
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else{
return false;
}
httpRequest.onreadystatechange = function(){
console.log(httpRequest.readyState);
if (httpRequest.readyState == 4) {
callback(httpRequest.responseText);
}
};
console.log(httpRequest, url);
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
答案 0 :(得分:4)
我解决了这个问题,分配onload事件而不是onreadystatechange:
function Request(url, callback){
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else{
return false;
}
var readyStateChange = function(){
console.log(httpRequest.readyState);
if (httpRequest.readyState == 4) {
callback(httpRequest.responseText);
}
};
if (isFirefox && firefoxVersion > 3) {
httpRequest.onload = readyStateChange;
} else {
httpRequest.onreadystatechange = readyStateChange;
}
console.log(httpRequest, url);
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
答案 1 :(得分:2)
答案 2 :(得分:1)
可能Ajax请求不返回数据(因此,某种服务器端错误)。尝试在firebug控制台中启用“show XMLHttpRequests”选项,以检查这一点。
答案 3 :(得分:0)
我也面临同样的问题。通过阅读下面的网址,我得到了解决。
http://bytes.com/topic/javascript/answers/548442-ajax-readystate-1-wall
基本上,当我将我的函数指定为httpRequest.onreadystatechange的事件监听器时,我无法将任何变量传递给它。所以我必须将变量嵌入到HTTP POST字符串中的服务器后端,然后从HTTP响应中恢复它。
它适用于FF 3.无需使用jQuery。
答案 4 :(得分:0)
我在FireFox上遇到了同样的问题,但在Chrome上却没有。
问题是我的回复将mime类型设置为 “应用程序/八位字节流”。
将其更改为“ text / html”使其也可以在FireFox上运行。