iframe下加载ajax的问题

jianwu5 2012-07-01 04:55:55
我花了一个下午的时间试图找出问题何在,最后还是无能为力,现是不抱着希望上来发贴请教。

all.html:
...
<div id="left">
<a href='one.html' target="i.html">one</a>
<a href='two.html' target="i.html">two</a>
...
</div>
<div id="right">
<iframe name="i" src="xxx.html" width="100px" height="100px"></iframe>
</div>

可以看到left左边是一堆a标签,点击后在right右边的iframe打开,all.html中加载了ajax.js文件。其中一个页面three.html里面也加载ajax文件,默认three.html.window.onload后打开ajax发送一次post请求返回json。
问题是点击three后,再点击one/two...则在新窗口中打开链接,而不是i中。
出现这种情况可能有两种可能:一是target改变了;二是all.html找不到i,所以默认在新窗口打开。
但,通过提取a的target依然为i,在all.html中alert(i)也能找到iframe,所以否定情况一。问题可能是情况二。
如果three不发送ajax.post则没问题,所有a标签指向i;这与返回的数据无关,即使ajax返回为空;改为ajax.get方法也无效;在php中改变content-type也没有解决问题。
这个问题存在于ie8/chrome,FF/opera则没有这样的问题,后两个浏览器是最新版本。

我最后的方法是在ajax前加上parent,即parent.ajax。
当然,无任何理由在子窗口加载父窗口已有的同样js文件,但我现在很疑惑问题出在哪?!
...全文
235 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-07-02
  • 打赏
  • 举报
回复
<a href='two.html' target="i.html">two</a>
应该是
<a href='two.html' target="i">two</a>

如果没有删除<iframe name="i"这个对象,应该是可以的
jianwu5 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

<a href='two.html' target="i.html">two</a>
应该是
<a href='two.html' target="i">two</a>

如果没有删除<iframe name="i"这个对象,应该是可以的
[/Quote]
哦,好是写错了的。iframe没有删除。我已经查看过了,只有在three.html页执行ajax才会出现这种情况。

87,903

社区成员

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

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