3

功能已定义。他们工作正常。在原始页面(没有ajax)中,情况是:

<script>
$(document).ready( function(){
callA();    
}); 

</script>


<script>
function  callA(){..}
</script>

在这种情况下它工作正常。但是如果使用 ajax 调用同一个页面,它会说

callA  is not defined

在萤火虫控制台中。

我错过了什么吗?如果它不应该工作,那么这在第一种情况下如何工作?

请帮忙。

编辑:这就是它的名称。

$.ajax({
 url:selectedPortletURL,
 method: "GET",
 success: function(data)
 {

    $("#searchCriteriaDiv").html(data);
},
 error: function(jqXHR, textStatus, errorThrown) {
     alert("error:" + textStatus + " - exception:" + errorThrown);
 }
}); 
4

2 回答 2

3

jQueryready事件在文档准备好时触发(或者如果文档已经准备好,则在附加函数时触发)。

由于您是在文档准备好后将脚本元素添加到文档中,因此是立即的。

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

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


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

于 2013-11-07T09:58:20.550 回答
1

$(document).ready()如果包含在 AJAX 响应中,则不会触发,因为它仅在原始文档首次加载时触发。

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

于 2013-11-07T09:57:34.527 回答