首页 > 编程知识 正文

ajax详解,js返回上一页但不刷新

时间:2023-05-04 14:04:52 阅读:119527 作者:1914

我最近在小看Ajax轮询技术。 但是,我似乎无法从xmlhttprequestfirefox(3.6.7)对象中覆盖处理程序。

在跟踪FF为什么在尝试访问时引起异常问题时,onreadystatechange注意到send ()依赖于是否调用了方法。

这是一个有效的示例(纯js,以前没有jQuery )。

(这只是为了演示而简化了很多)

var myxhr=new XMLHttpRequest (;

myxhr.open('get )、'/my/index.php );

my xhr.onreadystatechange=function (

控制台. log (就绪状态更改);

(;

控制台. log (onreadystatechangefunction : (,myxhr.onreadystatechange );

myxhr.send(null );

更好的是,myxhr.onreadystatechange可以在此访问。 如果我在最后两行代码之间切换,FF会引发异常,基本上它会告诉我不允许访问此对象。

myxhr.send(null );

控制台. log (onreadystatechangefunction : (,myxhr.onreadystatechange );

失败

那么我的实际问题在哪里?

是的,我想用jQuery的$.ajax (。 但是,如果尝试覆盖来自返回onreadystatechange的XHR对象的方法,$.ajax ()将收到相同的FireFox异常。

是的,我知道为什么会发生这种事,所以我想。 喂,那个beforeSend属性$.ajax ()是什么? 所以我基本上尝试了这个:

var myxhr=$.ajax({ (

url: '/my/index.php ',

类型: ' get ',

dataType: 'text ',

数据: {

foo: '1'

(,

before send :功能(xhr ) {

varreadystatehook=xhr.onreadystatechange;

xhr.onreadystatechange=function (

就绪状态hook.apply (this,[];

控制台. log (fired );

(;

(,

success :功能(data ) {

控制台. log (数据;

(,

错误:功能(xhr,文本状态,错误) {

控制台. log (xhr.statustext,textStatus,error );

}

);

你觉得是什么? 福克斯引起了异常。 你现在怎么办? 你像我一样深入jQuery源代码。 但是,那个会带来比回答更多的问题。 看起来好像在beforeSend (是xhr.send ) )运行之前确实进行了调用。 所以我想知道为什么不允许FireFox在这一点上覆盖处理程序。

结论?

是否要在jQuery/Firefox中创建一个自定义就绪状态更改处理程序?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。