如果使用ajax加载页面,则Javascript函数未定义错误

时间:2013-11-07 09:43:53

标签: javascript ajax

定义了这些功能。他们工作正常。在原始页面中(没有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);
 }
}); 

2 个答案:

答案 0 :(得分:2)

jQuery ready事件在文档准备就绪时触发(或者如果文档已经准备好,则在函数附加到它时立即触发)。

由于您在文档准备就绪后将脚本元素添加到文档中,因此立即执行。

首先解析第一个脚本元素。就绪处理程序触发。 callA未定义。

然后解析第二个脚本元素。 callA已定义,但为时已晚。


您需要重构代码。至少,我会将给定页面的所有内容放入一个脚本中。理想情况下,我会重写它,以便将所有JS分离为一个脚本文件,并使用Ajax加载结构化数据而不是HTML文档。

答案 1 :(得分:0)

如果包含在AJAX响应中,

$(document).ready()将不会触发,因为它仅在原始文档首次加载时触发。

建议不要通过AJAX加载动态<script>标记。您应该尝试将代码放在传统的javascript文件中,并使用回调。