【发布时间】:2011-07-18 14:05:09
【问题描述】:
我有一个包含 JQuery UI 选项卡小部件的网页。选项卡小部件通过 AJAX 加载选项卡。在其中一个标签页(将其命名为 DescriptionPage)中,我有一个将通过 ajaxForm 插件提交的表单。
<div id="tabs">
<ul>
<li>
<a href="DescriptionPage">Description Page</a>
</li>
</ul>
</div>
这是我的DescriptionPage的内容。
<form id="myForm">
<!-- Form elements goes here -->
</form>
<script>
$(function(){
$('#myForm').ajaxForm(function (response) {
$('#myForm').parent().empty().append(response);
});
});
</script>
提交表单后,返回相同的DescriptionPage,包括表单和脚本。所以表单内容被替换为服务器端的响应。响应还包含验证消息。
问题是,整个场景在 Chrome 和 Firefox 中运行良好。但在 Internet Explorer 8 中,发生了一个奇怪的问题。
第一次加载标签时,javascript成功执行。当用户提交表单并放置响应时,IE 无法执行我的 javascript,说“JQuery 未定义”。
为什么 IE 无法在通过 ajax 加载的内容中调用 JQuery? 有解决办法吗?
P.S:我想将脚本与 html 分开,但这根本不是一个选择:(
P.S2:由于愚蠢的 IE,我的 javascript 和 CSS 文件变得一团糟。
【问题讨论】:
-
这不能解决问题,但您可以使用
$('#myForm').parent().html(response); -
有趣的是错误显示为“jQuery”,因为您在此处粘贴的代码根本不使用变量“jQuery”。它是否告诉您错误发生在哪个文件和行上?
-
感谢马克的回复。在 IE 中,存在使用 html(response) 进行预防的错误,这就是我顺序使用 empty() 和 append() 的原因。
-
我粘贴的代码是我页面的一个非常简化的版本,我不想用成千上万的 LOC 来打扰你。但我很确定 JQuery 在加载的局部视图(JS 调试工具)的脚本中是未定义的。
-
我使用的一种调试技术是采用简化版本的代码,就像您在上面粘贴的那样,并用它进行测试。你试过了吗?
标签: jquery ajax jquery-ui-tabs ajaxform