ajax alert才有效

q287841348 2011-02-24 10:34:10
再使用AJAX中出现了很奇怪的问题,只有alert()以后ajax才保存

function AJAX(args){
var IT = this;
if( args.url == null || args.url == "")
alert("url不能为空!");
var sUrl = ""+args.url;
if( args.params != null && typeof args.params == "object"){
var param = args.params
var surl="";
var pfix = ( args.url.indexOf("?")>=0 )?"&":"?";
var size = 0;
for(var i in param){
size++;
}
for(var i in param){
surl += ""+i+"="+param[i]+"";
size--;
if(size!=0)
surl += "&";
}
var url = pfix+""+surl;
url = encodeURI(encodeURI(url));
args.url += url;
}
IT.param = args;
IT.param.xmlHttpRequest;

alert(args.url);//就是这里,如果把这个alert删除掉,调用的url方法就无法生效了


IT.init = function() {
var success = this.createXMLHTTPRequest();
if (!success) {
return;
}
var xmlHttpRequest = IT.param.xmlHttpRequest;
xmlHttpRequest.onreadystatechange = this.callback;
xmlHttpRequest.open("post",IT.param.url, true);
xmlHttpRequest.send(null);
}

IT.callback = function (){
var xmlHttpRequest = IT.param.xmlHttpRequest;
if (xmlHttpRequest.readyState == 4) {
var data = xmlHttpRequest.responseText;
if (xmlHttpRequest.status == 200) {
if( IT.param.success != null && typeof IT.param.success == "function"){
IT.param.success.call(data);
}
} else {
if( IT.param.error != null && typeof IT.param.error == "function"){
IT.param.error.call(data);
}
}
}
}

IT.createXMLHTTPRequest = function () {
if (window.XMLHttpRequest) {
//FireFox,Mozillar,Opera,Safari,IE7,IE8
IT.param.xmlHttpRequest = new XMLHttpRequest();
//针对某些特定版本的mozillar浏览器的BUG进行修正
if (IT.param.xmlHttpRequest.overrideMimeType) {
IT.param.xmlHttpRequest.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
//针对IE6,IE5.5,IE5
var activexName = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
for ( var i = 0; i < activexName.length; i++) {
try {
IT.param.xmlHttpRequest = new ActiveXObject(activexName[i]);
break;
} catch (e) {}
}
}
if (!IT.param.xmlHttpRequest) {
alert("XMLHttpRequest对象创建失败!!");
return false;
} else {
return true;
}
}

}

...全文
320 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2011-02-24
  • 打赏
  • 举报
回复
我简化了一下,你的ajax创建是没有问题的,也能成功的从服务器返回数据,只是没有找到你在哪里调用了IT.init()函数

test.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Title</title>

<script src="js/ajax-row.js"></script>
<script type="text/javascript">
AJAX();
</script>
</head>

<body>
</body>
</html>


ajax-row.js
function IT() {};

var xmlHttpRequest = null;

function AJAX(){
IT.init();
}

IT.init = function() {
xmlHttpRequest = IT.createXMLHTTPRequest();
if (!xmlHttpRequest || typeof xmlHttpRequest == "undefined") {
alert("xml http request is null");
return;
}

xmlHttpRequest.onreadystatechange = IT.callback;
xmlHttpRequest.open("post", "c.php", true);
xmlHttpRequest.send(null);
}

IT.callback = function (){
if (xmlHttpRequest.readyState == 4) {
var data = xmlHttpRequest.responseText;
if (xmlHttpRequest.status == 200) {
alert("成功: " + data);
} else {
alert("错误: " + data);
}
}
}

IT.createXMLHTTPRequest = function () {
var xmlHttpRequest;
if (window.XMLHttpRequest) {
//FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlHttpRequest = new XMLHttpRequest();
//针对某些特定版本的mozillar浏览器的BUG进行修正
if (xmlHttpRequest.overrideMimeType) {
xmlHttpRequest.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
//针对IE6,IE5.5,IE5
var activexName = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
for ( var i = 0; i < activexName.length; i++) {
try {
xmlHttpRequest = new ActiveXObject(activexName[i]);
break;
} catch (e) {}
}
}

if (!xmlHttpRequest) {
alert("XMLHttpRequest对象创建失败!!");
return null;
} else {
return xmlHttpRequest;
}
}


c.php // 换成jsp就可以了
<?php
echo "Hello";
?>
牛拦织女 2011-02-24
  • 打赏
  • 举报
回复
同意4楼观点
[Quote=引用 4 楼 java_cxrs 的回复:]
用jquery吧
[/Quote]
Inhibitory 2011-02-24
  • 打赏
  • 举报
回复
    IT.param = args;
IT.param.xmlHttpRequest;

没有看明白后面这一句是要做什么,没有找到你的IT.init()函数的调用
q287841348 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 java_cxrs 的回复:]

用jquery吧
[/Quote]

由于情况比较复杂,使用jquery可能会面临很多性能上的问题
q287841348 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cheniqit1 的回复:]

这个问题我也发生过 貌似是ie下的一个问题。 你可以alert的地方设置一个定时进行操作。应该可以
[/Quote]

...我使用的firefox,尝试加过setTimeout(new Function(""),5000);但是没有作用..
不善^ 2011-02-24
  • 打赏
  • 举报
回复
用jquery吧
cheniqit1 2011-02-24
  • 打赏
  • 举报
回复
这个问题我也发生过 貌似是ie下的一个问题。 你可以alert的地方设置一个定时进行操作。应该可以
q287841348 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lp19890601 的回复:]

这个很正常...

js是从上往下,逐步运行的


尝试把

IT.param = args;
IT.param.xmlHttpRequest;

放在最下边

java 技术交流群 23977598
[/Quote]

尝试过了,还是不行- -
lp19890601 2011-02-24
  • 打赏
  • 举报
回复
这个很正常...

js是从上往下,逐步运行的


尝试把

IT.param = args;
IT.param.xmlHttpRequest;

放在最下边

java 技术交流群 23977598

q287841348 2011-02-24
  • 打赏
  • 举报
回复
3Q~各位,问题已经解决了~是加载了一个延时函数,之前写的延时函数有点小问题~

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧