从iframe切换“;AJAX”;正确的AJAX
Switch from iframe "AJAX" to proper AJAX
这是遗留代码。我正在做一个项目,我们使用iframe来模拟AJAX。
基本上,我们使用target属性在iframe中提交<form>
,导致请求不会打开新的选项卡。此外,我们在PHP的响应中回显<script></script>
,结果会被执行,因为它填充了iframe。
下面是这样一个<form>
:的例子
<form id="form_to_submit" method="POST" action="ajax/createUser" target="iframe_name">
<input type="text" name="input_to_send">
<button type="button" onclick="$('#form_to_submit').submit()">Submit With Onclick!</button>
</form>
如今,这不仅看起来很邪恶,而且还有一个(也许还有其他(巨大的陷阱。如果通过这个过程发出了一个请求,而客户端去了某个地方,然后返回到他的浏览器历史记录中,它将再次发送请求。
要解决最后一个问题,有很多解决方案。我认为我最喜欢的是使用真正的AJAX而不是iframe。现在,理论上,我可以更改源代码中的每一个表单,使其使用AJAX,但我知道我不会为了这个目的连续工作一周。
我正在寻找一种"快速"的方法,在将这些请求发送到iframe之前拦截它们,并使用AJAX进行发送。
到目前为止,我尝试以具有target="iframe_name"
的<form>
标签为目标,并侦听submit
事件,然后使用相同的方法/URL/data再次发送请求。
$('form[target=iframe_name]').on('submit', function (event) {
event.preventDefault(event);
var url = $(this).attr('action'),
datas = $(this).serialize();
$.post(url, datas).done(function (response) {
eval($(response).text());
});
});
但只有通过真正点击提交按钮才能提交。我想说,这些案例中95%是通过onclick
标签提交的,这将.submit()
表单,在这些案例中,submit
事件不会触发它的出现。
我被卡住了,知道吗?
注意:我标记jquery只是为了让你知道它可以使用,尽管这个问题仍然与JS的任何lib/框架相关
实际上,只需对文档就绪:执行常规jQuery操作,就可以删除onclick
属性
<script>
$(document).ready(function() {
var getButton = $('form').find('button');
getButton.prop('onclick',null);
// put listener script here for new form submit (using ajax)...
});
</script>
这段代码只是在页面上对所有表单进行常规查找,找到按钮,然后删除onclick
属性。完成此操作后,表单就不应该再使用内联javascript提交了。
我建议这是暂时的,因为随着时间的推移,您会逐渐更改表单,以便使用jQuery侦听器以本机方式工作(就像您在没有onclick
的情况下创建的其他5%的表单一样(。
- 为什么我的 ajax 调用没有生成,因为我包含 ajax 的 js 文件包含在 iframe 中
- 创建使用 ajax 更新 iframe 的链接
- 我想在Iframe Javascript PHP的帮助下,将单个ajax上传器脚本转换为多个上传器
- Ajax下拉/最后一个选项更改Iframe
- 如何在 ajax 调用上的 iframe 中加载部分视图
- 使用 jquery 或 javascript 单击 iframe 中的元素可能是 AJAX
- 使用 AJAX 加载的 Iframe 代码未加载
- 从 iframe 到 ajax 的会话
- 在 html 中嵌入外部网页,而不使用 iframe/ajax
- Ajax Iframe 创建(Spotify widget):x 帧错误
- 如何在没有jQuery或iframe或flash的情况下为IE7 / 8制作AJAX文件上传器
- Laravel Routing with Ajax back to iframe
- Ajax iFrame:PHP 不会在我的循环中添加我与 SQL 不同的字符串(以重建 HTML 代码)
- Ajax 在 MVC3 中将 src 动态分配给 Iframe
- Jquery ajax,等待图像或iframe完全加载后再启动函数
- 获取通过ajax加载的iframe的HTML(请注意,iframe包含一个需要javascript加载的网页)
- Ajax iframe请求在Internet Explorer中只能工作一次
- Ajax Iframe触发器单击提交
- Ajax / iFrame / FileSystemObject Upload
- 跨域 Ajax iframe JavaScript 问题