gpt4 book ai didi

jquery ajax html 响应更改 1.3.2 与 1.4.2 (又名我的脚本标签在哪里?)

转载 作者:行者123 更新时间:2023-12-01 05:10:05 25 4
gpt4 key购买 nike

我一直在使用 jquery 1.3.2 从服务器提取 html 片段(包括脚本)。典型的响应可能是:

<div id="content"><div id="inner">...

<script type=...> alert("hello world");</script>

<p>Hello World</p>

</div></div>

我一直在使用查询.get函数:

$.get($(this).attr("href"), function(response) {
$("#inner").replaceWith($("#inner", response));
});

一切都很好并且按预期工作:返回的 html 片段被加载到 DOM 中并且脚本运行。

但是,当我使用 1.4.2 时,我注意到脚本标记已被删除并且不再运行。

进入较新的 jquery 代码库会产生以下代码行(第 4498 行):

ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );

这似乎是作为选择器过程的一部分将脚本从其愉快的休息位置“删除”的罪魁祸首。但它并不能帮助我将我想要的内容准确地注入(inject)到 DOM 中。

知道为什么 jquery 这样做吗?更重要的是,我该如何解决这个问题以便我的脚本运行?

最佳答案

如果您可以更改服务器端代码以返回此值(只需删除无论如何都存在的包装器 div)

<script type="text/javascript">alert("hello world");</script>
<p>Hello World</p>

那么你可以使用

$("#inner").load($(this).attr("href"));

这似乎没有遇到这个问题。

<小时/>

或者,如果实际上只是返回此表单的一个片段(有效的 xml),您也可以尝试将 xml 指定为 dataType

$.get($(this).attr("href"), null, function(response) {
$("#inner").replaceWith($("#inner", response));
}, "xml");

关于jquery ajax html 响应更改 1.3.2 与 1.4.2 (又名我的脚本标签在哪里?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com