定义了这些功能。他们工作正常。在原始页面中(没有ajax)的情况是:
<script>
$(document).ready( function(){
callA();
});
</script>
<script>
function callA(){..}
</script>
在这种情况下它可以正常工作。但如果使用ajax调用相同的页面,则表示
callA is not defined
在firebug控制台中。
我错过了什么吗?如果它不起作用那么这在第一种情况下如何工作?
请帮忙。
编辑:这就是它的调用方式。
$.ajax({
url:selectedPortletURL,
method: "GET",
success: function(data)
{
$("#searchCriteriaDiv").html(data);
},
error: function(jqXHR, textStatus, errorThrown) {
alert("error:" + textStatus + " - exception:" + errorThrown);
}
});
答案 0 :(得分:2)
jQuery ready
事件在文档准备就绪时触发(或者如果文档已经准备好,则在函数附加到它时立即触发)。
由于您在文档准备就绪后将脚本元素添加到文档中,因此立即执行。
首先解析第一个脚本元素。就绪处理程序触发。 callA
未定义。
然后解析第二个脚本元素。 callA
已定义,但为时已晚。
您需要重构代码。至少,我会将给定页面的所有内容放入一个脚本中。理想情况下,我会重写它,以便将所有JS分离为一个脚本文件,并使用Ajax加载结构化数据而不是HTML文档。
答案 1 :(得分:0)
$(document).ready()
将不会触发,因为它仅在原始文档首次加载时触发。 德尔>
建议不要通过AJAX加载动态<script>
标记。您应该尝试将代码放在传统的javascript文件中,并使用回调。