XMLHttpRequest状态为4,但responseText为空
XMLHttpRequest status 4 but responseText is empty
我想写一个谷歌广告像javaScript插件。我不能使用jQuery ajax,因为它应该是工作良好的所有网站。这是我的JavaScript代码。
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
alert( ajaxRequest.responseText);
console.log('xhr',ajaxRequest)
} else {
//alert(ajaxRequest.readyState);
//alert(ajaxRequest.responseText);
}
}
var project_path = "http://www.domainname.com/"; //for stackoverflow, using right path in live code.
var req_url = project_path + "ads/verifypublisher/";
ajaxRequest.open("GET", req_url, true);
ajaxRequest.send(null);
我的PHP文件是这样的,
echo("<b>hi:</b> ");
exit();
是的,这是我所有的。responseText仍然是空的。我错过了什么?
alert(req_url)应该显示错误的url "http://www.domainname.comads/verifypublisher/"
在对响应执行任何操作之前,最好确保状态码为200。这样您就可以更早地发现问题。
在我的测试中,它在大多数浏览器中工作
var responseText=function(e,doing){
if (e.readyState== 4) {
if(doing)doing(e);
return(e.responseText);
};
if (e.readyState == 200) {
if(doing)doing(e);
return(e.responseText);
};
return false;
};
function loadXMLPostDocf(url,method,posData,uploadProgress,uploadComplete,uploadFailed,uploadCanceled,statechange,CallBackOnSend) {
var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest && checkVersion()) {
pos = new XMLHttpRequest();
pos.open(method, url, true);
//pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if(statechange!=''){pos.onreadystatechange = statechange;};
try{
if(uploadProgress!='')if(pos.upload){
pos.upload.addEventListener("progress", uploadProgress, true);
}else{
pos.addEventListener("progress", uploadProgress, true);
}
if(uploadComplete!='')pos.addEventListener("load", uploadComplete, false);
if(uploadFailed!='')pos.addEventListener("error", uploadFailed, false);
if(uploadCanceled!='')pos.addEventListener("abort", uploadCanceled, false);
}catch(e){
}
pos.send(posData);
if(CallBackOnSend)CallBackOnSend(pos);
//console.log(pos.abort());
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
for (var i=0; i < arrSignatures.length; i++) {
try {
pos = new ActiveXObject(arrSignatures[i]);
} catch (oError) {
//ignore
};
};
if (pos) {
pos.open(method, url, false);
//pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if(!statechange){pos.onreadystatechange = statechange;};
if(!uploadComplete){pos.onreadystatechange = uploadComplete;};
// if(uploadProgress!='')pos.upload.addEventListener("progress", uploadProgress, true);
//if(uploadComplete!='')pos.addEventListener("load", uploadComplete, false);
//if(uploadFailed!='')pos.addEventListener("error", uploadFailed, false);
//if(uploadCanceled!='')pos.addEventListener("abort", uploadCanceled, false);
pos.send(posData);
if(CallBackOnSend)CallBackOnSend(pos);
};
};
return(pos);
};
示例: var complete=function(e){
var Body=responseText(e.target);
console.log(Body);
};
var uploadProgress=function(evt){
};
var uploadComplete=function(evt){
if(evt.target.status==200 || evt.target.status==304){
var Body=responseText(evt.target);
console.log(Body);
}else{
return false;
};
};
var uploadFailed=function(evt){
};
var uploadCanceled=function(evt){
};
var CallBackOnSend=function(evt){
};
loadXMLPostDocf("http://domain.com/index.php","GET",null,uploadProgress,uploadComplete,uploadFailed,uploadCanceled,complete,CallBackOnSend);
我的问题类似于这是通过检查我的html代码解决。我有一个onclick
处理程序在我的表单提交按钮到一个方法。像这样:onclick="sendFalconRequestWithHeaders()"
。这个方法反过来调用ajax,就像您的方法一样,并做我想做的事情。但不像预期的那样,我的浏览器什么也没有返回。
经过别人的努力,我在这个处理程序中返回了false,并解决了。让我提一下,在到达这篇文章之前,我花了整整3天的周末和半天的时间在办公室写代码实现CORS filters
, jetty config
和其他jersey and embedded jetty
相关的东西-只是为了解决这个问题。我所有的理解都围绕着cross domain ajax requests
和标准的东西。javascript中简单的错误会让你变傻,这真是太可笑了。
现在我必须清理我的代码干净地提交git补丁。多亏了那个人
相关文章:
- 如果文本字段为空,则使用JavaScript应用CSS样式
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 如果localstorage为空,则显示欢迎消息
- 使用 jQuery 检查所有值是否为空或已填充
- 如果值为空,如何设置输入的默认值?jQuery
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 在MVC 4中,对Controller的Ajax调用为空
- Spring Ajax列表返回,但对象为空
- 输入文本框为空时的阻止按钮asp.网络表单
- $_POST变量为空
- 如果数据为空,Ajax加载不会停止
- 边框颜色是't如果输入为空,则更改
- servlet-为什么XMLHttpRequest responseText始终为空
- GM_xmlhttpRequest responseText在Firefox中为空,但在Chrome中是完美的
- ajax GET请求responseText为空
- responseText为空,但显示在控制台上
- 响应XML为空,尽管responsetext是有效的.net webservice
- XMLHttpRequest状态为4,但responseText为空
- xmlhttprequest中的responseText为空
- XMLHttpRequest的状态为200,但responseText为空