1
// 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没有执行?谢谢你。

4

3 回答 3

1

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

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

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

jQuery.load(); 里面有代码,首先取出这些标签,然后通过innerHTML添加剩余的HTML,然后分别运行标签。您可以在第 211 行附近看到执行此操作的代码。来自文档

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

于 2012-04-17T08:31:53.943 回答
0

第一次尝试:

  <script type="text/javascript">

    alert('dfd');

    </script>

然后尝试

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

    });

</script>

并粘贴结果。

于 2012-04-16T10:44:09.340 回答
0

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

于 2012-04-16T10:48:03.447 回答