加载页面上的Javascript未执行

时间:2012-04-16 10:33:30

标签: javascript jquery ajax

// Change the value of the outputText field
function setAjaxOutput(){
    if(httpObject.readyState == 4){
        document.getElementById('maincontent').innerHTML = httpObject.responseText;
    }
}

我尝试加载包含此脚本的页面

<script type="text/javascript">
$(document).ready(function() {
alert('dfd');
$("#formAddUser").validate({
    rules: {
        userImage: {
            required: true,
            accept: "png|jpg|gif|jpeg"
        }
    }
});
});
</script>

<div class="content-box">
<div class="content-box-header">
........................

为什么加载页面上的javascript没有执行?谢谢。

3 个答案:

答案 0 :(得分:1)

您的问题是innerHTML不会在HTML片段中执行脚本。当你说'element.innerHTML = htmlfragment;'时,它只是添加标签并呈现HTML。脚本标记不会被浏览器呈现为HTML的一部分,因此会被忽略。

您需要使用jQuery.load()而不是jQuery.ajax(),如下所示:

$('#maincontent').load('yourscript.php');

jQuery.load();内部的代码首先将这些标记输出,然后通过innerHTML添加剩余的HTML,然后单独运行标记。您可以在211行左右看到执行此操作的代码here。来自docs

  

使用不带后缀选择器的URL调用.load()时   表达式,内容在脚本出现之前传递给.html()   除去。这将在丢弃之前执行脚本块。如果   使用附加到URL的选择器表达式调用.load(),   但是,在更新DOM之前,脚本会被删除,   因而没有被执行。

答案 1 :(得分:0)

首先尝试:

  <script type="text/javascript">

    alert('dfd');

    </script>

然后尝试

<script type="text/javascript">
    $(document).ready(function() {
    alert('dfd');

    });

</script>

并粘贴结果。

答案 2 :(得分:0)

我相信你的表格带有ajax。因此,如果您可以将验证转换为函数,并在ajax加载的内容中调用它,那就更好了。