执行后删除自身的javascript/jquery函数
我正在向我的一个控制器发送一个ajax请求,以更新用户交互(他访问/喜欢的页面)以获得非常深入的分析。我将这些信息存储在我的mongo db中 我只想在请求成功后删除这个脚本。但是所有的警报都有效,但是脚本从不删除。下面是我的代码执行后删除自身的javascript/jquery函数,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在向我的一个控制器发送一个ajax请求,以更新用户交互(他访问/喜欢的页面)以获得非常深入的分析。我将这些信息存储在我的mongo db中 我只想在请求成功后删除这个脚本。但是所有的警报都有效,但是脚本从不删除。下面是我的代码 <div id="delete_this"> <script> $(document).ready(function() { $.ajax({ url: weblink+'user-interactions', type:
<div id="delete_this">
<script>
$(document).ready(function() {
$.ajax({
url: weblink+'user-interactions',
type: 'POST',
dataType: 'html',
data: {
//some post data
},
})
.done(function(html) {
alert("works");
var status = "executed";
alert("works here");
$("#delete_this").remove();
})
.fail(function(html) {
console.log("error");
});
});
</script>
</div>
$(文档).ready(函数(){
$.ajax({
url:weblink+“用户交互”,
键入:“POST”,
数据类型:“html”,
数据:{
//一些post数据
},
})
.done(函数(html){
警惕(“工作”);
var status=“已执行”;
警惕(“在这里工作”);
$(“#删除此”).remove();
})
.fail(函数(html){
控制台日志(“错误”);
});
});
我到目前为止所做的:
1) 尝试添加一个div作为父级,并指向删除该div,如脚本所示
2) 将.remove()从脚本中分离到一个新的脚本标记中,并使用如下内容
<script>
$(document).ready(function() {
$("#delete_this").remove();
});
</script>
$(文档).ready(函数(){
$(“#删除此”).remove();
});
通过这样做,我们将能够实现构建更安全的网页。是吗?您可以使用纯Javascript来实现这一点(未对此进行测试) 不确定这是否理想,但它应该将其从DOM中完全删除。这可以:
<button>remove</button>
<script id="test">
$( "button" ).click(function() {
$( "#test" ).remove();
alert("removed " + ($( "#test" ).length == 0));
});
</script>
删除
$(“按钮”)。单击(函数(){
$(“#测试”).remove();
警报(“已删除”+($(“#测试”)。长度==0);
});
请在此处尝试:
因此,要么您有a)其他阻止该脚本完成的错误,要么b)
测试删除的标准不正确。
内部的
标记错误?该脚本仅在dom ready上执行一次。为什么需要在执行后将其删除?有什么好的理由对访问者隐藏已执行的javascript?@Pilot。。我相信将脚本放在任何地方都不会产生问题,也不会产生错误的标记。请看这里使用cookie设置请求已完成,始终检查此cookie以使请求删除脚本标记的想法生效。但由于某些原因,在ajax请求被激发之后,在获得响应(在“完成”部分)时,我使用了remove()函数。但它并没有消失。任何理由。我的页面中没有错误。控制台看起来很干净。现在,仅仅因为我尝试了所有可能的选项,但没有成功,我就混淆了javascript。但解决这个问题的办法将是一个很好的教训。好主意@garryp。但是remove()的作用与代码的作用几乎相同。脚本标记很容易删除。但是,我的函数中的remove()或代码中的nodeParent.removeChild(domNode)对AJAX请求的成功不起作用。有什么原因吗?啊,好吧,我明白你想做什么了。如何将加载事件更改为$(document.ready(function(){if(myFunc)myFunc();});而不是像现在这样的匿名内联函数,并将所有AJAX内容放在myFunc中。然后您可以使用delete myFunc;或myFunc=未定义;它应该删除函数,而未定义的条件检查应该可以防止错误。
<button>remove</button>
<script id="test">
$( "button" ).click(function() {
$( "#test" ).remove();
alert("removed " + ($( "#test" ).length == 0));
});
</script>