【Ajax/Prototype.js + PHP】异步调用在firefox下面正常,在ie内核浏览器下得不到responseText

NuttyCoder 2007-11-20 11:27:14
程序是用Prototype.js里面的Ajax.Request实现的异步调用do.php,获取response.responseText

因为封装的缘故,回调时候要经过几层函数,大致如下:


 
...

//1.最里层执行Ajax.Request的函数

load : function(tag, callback){

//alert(this.path);

new Ajax.Request(this.path, {

encoding : 'GB2312',

method : 'post',

parameters : 'action=load&tag=' + tag,

asynchronous : true,

onSuccess : callback,

onFailure : function(){

$('status').innerHTML = 'Load failed.';

}

});

},

...



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

...

//2.外一层封装

loadJSON : function(tag, object, callback) {

if (object) {

this.json.load(tag, function(response){

//!IE内核在这里就不能获得response.responseText,但是firefox却没有问题

if(response && response.responseText) {

var jsonstr = response.responseText;

Object.extend(object, jsonstr.evalJSON());

} else {

object = null;

}

callback(object);

});

} else {

alert("need arg : object (Storage.loadJSON(tag, object))");

}

},

...





问题就在第二段程序注释!那个地方,在firefox下运行的时候,回调时候会顺利得到response.responseText,程序没有问题。但是在ie/maxthon下面运行的时候,也会回调,但是alert(response.responseText)貌似就有错误。alert(response)为[object]

firebug lite没用明白,运行起来时候没找到怎么显示js代码行...= =所以暂时也没法子知道更多...昏中。

后端是php,服务器貌似是debian吧...

可能是什么问题呢......?
...全文
367 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
NuttyCoder 2007-11-21
  • 打赏
  • 举报
回复
顶顶~求达人帮忙看看吧:)
NuttyCoder 2007-11-21
  • 打赏
  • 举报
回复
已经解决了,因为Apache默认编码设置成了gbk,do.php返回的内容用Ajax.Request按照utf-8解析,无法得到response.responseText。在do.php中加header()设置编码为utf-8解决。
NuttyCoder 2007-11-20
  • 打赏
  • 举报
回复
代码如下
...

//1.最里层执行Ajax.Request的函数

load : function(tag, callback){

//alert(this.path);

new Ajax.Request(this.path, {

encoding : 'GB2312',

method : 'post',

parameters : 'action=load&tag=' + tag,

asynchronous : true,

onSuccess : callback,

onFailure : function(){

$('status').innerHTML = 'Load failed.';

}

});

},

...



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

...

//2.外一层封装

loadJSON : function(tag, object, callback) {

if (object) {

this.json.load(tag, function(response){

//!IE内核在这里就不能获得response.responseText,但是firefox却没有问题

if(response && response.responseText) {

var jsonstr = response.responseText;

Object.extend(object, jsonstr.evalJSON());

} else {

object = null;

}

callback(object);

});

} else {

alert("need arg : object (Storage.loadJSON(tag, object))");

}

},

...

52,797

社区成员

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

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