【发布时间】:2015-03-06 04:47:46
【问题描述】:
我的页面进行了 Ajax 调用,该调用返回一些 HTML 以嵌入页面和一个脚本以运行,将 JQuery 工具提示附加到嵌入式 HTML 的各种元素。 HTML 和脚本由我的 Django 后端作为 JSON 对象返回,并且在页面中显示正常,但是当我评估它时 Javascript 似乎不起作用:
$.ajax({
type: "GET",
url: "/url/to/ajax",
data: {
"foo": bar
},
success: function (data) {
$("#my-table").html(data['html']);
// alert(data['script']); // this works: I can see the script
eval(data['script']);
},
error: function () {
$("#my-table").html('');
}
});
脚本本身看起来像一系列表达式,例如:
$(".foobar1").tooltip({
content: "The <em>foo</em> to the <strong>bar</strong>.",
tooltipClass: "tt-ref",
show: null,
close: function (event, ui) {
ui.tooltip.hover(
function () {
$(this).stop(true).fadeTo(400, 1);
},
function () {
$(this).fadeOut("400", function () {
$(this).remove();
})
});
}
});
其中foobar1 是刚刚添加到#my-table HTML 中的HTML 中的一个类。
谁能看到我在哪里出错了? jquery 和 jquery-ui 都加载到我的页面上。
【问题讨论】:
-
您在开发者工具的控制台中看到任何错误吗?
-
在一个 AJAX 响应中同时提供 HTML 和 Javascript 是非常规的。该脚本看起来是静态的 - 它不能作为初始页面加载的一部分在函数包装器中交付吗?
-
@Ako 控制台中没有错误,也没有工具提示。
-
@Roamer-1888 - 我无法在初始页面加载时提供它,因为我不知道会点击 27 个
foos 中的哪一个:当一个是时,我获取 10-20数据库表中的行并将工具提示附加到它们。有 >1000 行,所以我不想为所有这些静态定义我的工具提示。 -
xnx,事先不知道一切是 javascript 的标准票价。我看不到任何东西可以阻止在页面加载时传递函数并在 AJAX 传递的 HTML 放置的元素上调用函数。
标签: javascript jquery ajax