Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery不会在加载了ajax的div上执行_Javascript_Jquery_Ajax_Dom - Fatal编程技术网

Javascript jQuery不会在加载了ajax的div上执行

Javascript jQuery不会在加载了ajax的div上执行,javascript,jquery,ajax,dom,Javascript,Jquery,Ajax,Dom,我正在使用PHP、MySQL、AJAX、Javascript、HTML5、css3开发一个网站。。。我试图做的是加载一个外部html文件并执行嵌入的Javascript 我尝试使用的ajax负载如下 <pre><code> $(document).ready(function(){ $(".meny a").click(function(){ page=$(this).attr("href");

我正在使用PHP、MySQL、AJAX、Javascript、HTML5、css3开发一个网站。。。我试图做的是加载一个外部html文件并执行嵌入的Javascript

我尝试使用的ajax负载如下

<pre><code>


    $(document).ready(function(){

        $(".meny a").click(function(){
            page=$(this).attr("href");
            $.ajax({
                url: "includes/"+page,
                cache:false,
                success:function(html){
                    afficher(html);
                },

                error:function(XMLHttpRequest,textStatus,errorThrown){
                    alert(testStatus);
                }
            })

            return false;
        });
    });

    function afficher(data){
        $("#main").fadeOut(500,function(){
        $("#main").empty(); 
        $("#main").append(data);
        $("#main").fadeIn(1000);
        })
        }


</code></pre>
当直接加载页面内容时,javascriptor jQuery函数工作正常,但当AJAX加载的另一个页面内容中发现的div标记时,javascriptor jQuery不在该div上工作,而jQuery脚本已存储在head标记中

我认为问题在于AJAX,因为当我直接调用包含Javascript的页面时,它工作正常。

使用

 $(".meny a").click( ....
而不是

// inject the contents of the document in,removing the scripts 
// to avoid any 'Permission Denied' errors in IE 
.append( responseText.replace( rscript, "" ) ) 

$.meny a现在可以单击

默认情况下,将不会执行AJAX检索的页面中包含的javascript,因为它被视为纯文本

您将希望将文本评估为javascript。javascript中有一个内置函数可以实现这一点,称为eval。这是一篇关于将eval与AJAX结合使用的好文章,多亏了

然而,我必须指出,使用eval被认为是一种不好的做法。有一个众所周知的说法,因为它的性能很差,并且可能存在XSS漏洞。因此,您可能希望了解如何在不直接使用AJAX调用或动态构建的脚本标记的情况下实现类似的效果。但是,出于您的目的,如果响应纯粹是javascript,则eval将起作用。否则,您将需要以某种方式从您的$.get返回的HTML中提取javascript。

@kieran 不,我从来没有试过这个把戏!我想我找到了真正的问题

jQuery实际上删除了它在ajax调用中遇到的任何javascript。他们这样做是为了防止IE中出现问题。以下是jQuery 1.8.3第7479-7481行中的实际片段:


第7291行定义了rscript regex:rscript=/?:?!。。因为当我直接调用包含Javascript的页面时,它工作正常。您可以发布包含Javascript的页面的内容吗?我没有得到对您不起作用的内容。当您尝试通过ajax加载div的内容时,加载是否正常?尝试以下链接单击与单击事件上的绑定方式相同。问题是如何执行ajax调用的HTML响应中包含的javascript,答案是使用eval或Equivalent。我以前使用过它,但它不起作用,我甚至尝试使用$document。on'click',a.shortcut,function{而且它不起作用:/hello,第一个用于anser的thx…这不是我第一次听说这个解决方案评估,我还听说了回调、触发器和getscript..但我只是jQuery的初学者,如果你能提供一些代码让我试用,它会很有帮助。值得注意的是,我尝试用ajax加载的页面不包含ain javascript!所有javascript和jQuery都已经存储在第一页的head标记中了!等等什么?那么你指的是什么:加载一个外部html文件并让嵌入的javascript执行?你提供给我们的代码片段是外部javascript,并且在其中有一个脚本标记吗?那么答案可能是只需删除和标记,因为它们是用于内联脚本的…不,你不明白我的意思!显然,所有存储在head标记中的javascript与任何网页一样,问题是javascript在使用ajax加载时不会在内容html中执行!但是如果我直接使用include with php加载同一页面以测试javascript执行。。。希望你能理解我的蹩脚英语:/Hm,我想如果整个页面都显示出来的话,这会容易得多。可能我想我理解你:你有一些javascript,它引用了AJAX调用加载的HTML,当你在服务器上包含它时,它会起作用,但动态加载时不会起作用。头部的javascript可能是exec在AJAX返回HTML之前执行uting?它将与PHP一起工作,因为它是在页面响应期间加载的,在javascript执行之前加载的。也许解决方案是在保证HTML将出现的情况下调用afficher中引用HTML的函数。是的,这正是发生的事情!因此在本例中,我尝试添加callb明白了,但这对我没用,我也不知道该怎么办!你能给我指个正确的方向吗?
// inject the contents of the document in,removing the scripts 
// to avoid any 'Permission Denied' errors in IE 
.append( responseText.replace( rscript, "" ) )