在一个AJAX调用中调用html内部的jQuery函数

时间:2008-10-25 05:45:37

标签: javascript jquery ajax

我正在使用jQuery的网页。我有一个Ajax调用,从服务器获取数据并更新div。在该数据中有一个jQuery函数,但在将数据加载到页面后不会调用该函数。我已经在页面中包含了正确的js文件。

这是从Ajax调用返回的内容并放入div:

<script type="text/javascript">
    $(function() {
         $('input').myFunction('param');             
    }); 
</script>
<p> other html </p>

如何在将html插入页面后运行返回的javascript?

(我正在使用带有jRails插件的Rails)

6 个答案:

答案 0 :(得分:27)

如果你想要使用html内容进行JavaScript标记评估,你应该将ajax调用的dataType选项设置为“html”:

$.ajax({
  type: "GET",
  url: "yourPage.htm",
  dataType: "html"
});

或者dataType“script”,如果要加载并执行.js文件:

$.ajax({
  type: "GET",
  url: "test.js",
  dataType: "script"
});

此处有更多信息:Ajax/jQuery.ajax

答案 1 :(得分:7)

我有一个类似的问题,我想在我通过ajax检索的几个字段中添加小jquery日期选择器。这就是我绕过它所做的...只是快速而肮脏。而不是从我的ajax调用中返回整个块:

<script type="text/javascript">
    $(function() {
         $('input').myFunction('param');                         
    }); 
</script>
<p> other html </p>

我会回复此(注意组成| x |分隔符)

    $(function() {
         $('input').myFunction('param');                         
    }); 

|x|

<p> other html </p>

然后当我通过ajax收回数据时,我将返回值分成两部分:要执行的javascript和要显示的html:

 r = returnvalfromajax.split("|x|");       
 document.getElementById('whatever').innerHTML = r[1];  
 eval(r[0]);

答案 2 :(得分:1)

更改

<script type="text/javascript">
...
</script>

要:

<script>
...
</script>

为我解决了这个问题。

答案 3 :(得分:-1)

好吧,你可以使用jQuery load()函数:http://docs.jquery.com/Ajax/load#urldatacallback 作为回调,您可以定义在加载新内容后将执行的功能 例如:

$(“#feeds”)。load(“new_content.html”,, doSomething());

在new_content.html中你可以定义函数doSomething()...

答案 4 :(得分:-1)

对于ajax.net,endRequestHandler(sender, args)解决方案可以正常工作

答案 5 :(得分:-7)

你试过Sys.WebForms.PageRequestManager.add_endRequest方法吗?

    $(document).ready(function()
    {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);           
    }
    );
    function endRequestHandler(sender, args)
    {
        // whatever
    }