Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行后删除自身的javascript/jquery函数_Javascript_Jquery_Html_Ajax - Fatal编程技术网

执行后删除自身的javascript/jquery函数

执行后删除自身的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:

我正在向我的一个控制器发送一个ajax请求,以更新用户交互(他访问/喜欢的页面)以获得非常深入的分析。我将这些信息存储在我的mongo db中

我只想在请求成功后删除这个脚本。但是所有的警报都有效,但是脚本从不删除。下面是我的代码

<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将一直保留在会话中,直到页面刷新为止。那么为什么我们不遵循一个标准,我们可以执行脚本并删除它们呢
    通过这样做,我们将能够实现构建更安全的网页。是吗?

    您可以使用纯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>