小编典典

内联jQuery脚本在AJAX调用中不起作用

ajax

我有一个问题:
虽然我从另一个带有ajax的页面调用内联脚本(也使用jQuery),但似乎不再定义jQuery(?),并且我无法使用任何jQuery函数,应该使用(根据内联脚本)。

它基本上是新闻列表,其中包含指向特定新闻项目的链接。我现在更喜欢使用内联脚本,因为在其他地方不需要此功能。

$.ajax({
 url: href,
 cache: false,
 success: function(html){
  $('#fancy_ajax').append($(html).find('.mainContentPadded'));
}
});

如您所见,我只是在调用另一个页面的一部分并将其内容附加到页面上。

当我加载整个页面(不是页面的一部分)时-jQuery可以按预期工作(这就是为什么我遇到这个想法,即需要对其进行“重新绑定”)。

谢谢!


阅读 240

收藏
2020-07-26

共1个答案

小编典典

因此,如果我正确理解了您的问题,那么html变量中包含一些JavaScript吗?如果是这样,它将不起作用,因为由于安全风险,浏览器不会执行从AJAX匹配检索的JavaScript。

我建议您在启动Ajax请求的页面中包含必要的javascript代码,以便在添加新内容时该代码已经可用。

*编辑…

monksp在注释中添加了一个很棒的链接,该注释显示了如何让jQuery完全执行您想要的操作。

这也是一些手动执行相同操作的代码:

<html>
<head>
<title>Test JavaScript JSON</title>
</head>
<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.3.2');
</script>
<body>
<script type="text/javascript">
    $(document).ready(function() {
        $.getJSON('testjs.json', function(json){
               $(document.body).append(json.html);
               eval(json.js);
             });
    });

</script>
</body>
</html>

这是testjs.json的内容:

{"html":"<p class=\"newelement\">Click me</p>","js":"$(\".newelement\").click(function() { alert($(this).text()); });"}

最后,还有一堆现成的插件和其他可以动态包含javascript的东西。我过去使用过YUI
Get:http//developer.yahoo.com/yui/3/get/

2020-07-26