加载页面上的Javascript未执行

加载页面上的Javascript未执行,javascript,jquery,ajax,Javascript,Jquery,Ajax,我尝试加载包含此脚本的页面 // Change the value of the outputText field function setAjaxOutput(){ if(httpObject.readyState == 4){ document.getElementById('maincontent').innerHTML = httpObject.responseText; } } $(文档).ready(函数(){ 警报(“dfd”); $(“#for

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

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

$(文档).ready(函数(){
警报(“dfd”);
$(“#formAddUser”).validate({
规则:{
用户图像:{
要求:正确,
接受:“png | jpg | gif | jpeg”
}
}
});
});
........................
为什么加载页面上的javascript没有执行?谢谢。

第一次尝试:

<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">
........................

警报(“dfd”);
然后试试看

  <script type="text/javascript">

    alert('dfd');

    </script>

$(文档).ready(函数(){
警报(“dfd”);
});
然后粘贴结果。

第一次尝试:

<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">
........................

警报(“dfd”);
然后试试看

  <script type="text/javascript">

    alert('dfd');

    </script>

$(文档).ready(函数(){
警报(“dfd”);
});

并粘贴结果。

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

我相信您的表单附带了ajax。因此,最好将验证转换为函数,并在ajax加载的内容中调用它。

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

您需要像这样使用jQuery.ajax()而不是jQuery.ajax():

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

    });

</script>
load();内部有代码,首先取出这些标记,然后通过innerHTML添加剩余的HTML,然后分别运行这些标记。您可以在第211行附近看到执行此操作的代码。从:

使用不带后缀选择器的URL调用.load()时 表达式,则在创建脚本之前将内容传递到.html() 远离的。这将在脚本块被丢弃之前执行它们。如果 .load()是通过附加到URL的选择器表达式调用的, 但是,在更新DOM之前,脚本会被剥离, 因此没有执行


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

您需要像这样使用jQuery.ajax()而不是jQuery.ajax():

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

    });

</script>
load();内部有代码,首先取出这些标记,然后通过innerHTML添加剩余的HTML,然后分别运行这些标记。您可以在第211行附近看到执行此操作的代码。从:

使用不带后缀选择器的URL调用.load()时 表达式,则在创建脚本之前将内容传递到.html() 远离的。这将在脚本块被丢弃之前执行它们。如果 .load()是通过附加到URL的选择器表达式调用的, 但是,在更新DOM之前,脚本会被剥离, 因此没有执行


您的意思是通过setAjaxOutput()获取HTML,然后将其嵌入页面并发现脚本标记未执行?是的,嵌入页面上的脚本未执行您的意思是通过setAjaxOutput()获取HTML,然后将其嵌入页面并发现脚本标记未执行?是,嵌入页面上的脚本未执行能否给我一个示例,很抱歉,还是新手你的意思是喜欢这个函数setAjaxOutput(){if(httpObject.readyState==4){document.getElementById('maincontent')。innerHTML=httpObject.responseText;alert(“test”);//call function}它可以工作,但是我认为这个函数不再是一个全局函数,我必须为我要加载的每个页面指定。好的,在js文件中,编写一个函数,如:
function validate\u no\u matter(){//您的验证在这里,即选择表单id,在cetra验证字段,}
。在主页中包含此js文件<代码>然后在主页和ajax加载页面中运行如下脚本:
验证无所谓()。在主页中,您可以在DocumentReady中调用它。但是,在ajax页面中,您需要在文档末尾像上面那样调用它。您能给我一个例子吗,对不起,还是新手您的意思是喜欢这个函数setAjaxOutput(){if(httpObject.readyState==4){document.getElementById('maincontent').innerHTML=httpObject.responseText;alert(“test”);//call function}它可以工作,但我认为这个函数不再是一个全局函数,我必须为我要加载的每个页面指定。好的,在js文件中,编写一个函数,如:
function validate\u no\u matter()。在主页中包含此js文件<代码>
然后在主页和ajax加载页面中运行如下脚本:
验证无所谓()。在主页中,您可以在DocumentReady中调用它。然而,在ajax页面中,您需要像上面文档末尾那样调用它。谢谢Matt Gibson,很好的解释。谢谢Matt Gibson,很好的解释。