How do I clear previous variable in cache during the Ajax call while sending variable to PHP

[亡魂溺海] 提交于 2020-01-17 02:52:34

问题


I am unable to stop the previous variable loading during the ajax call.

Please find onclick I am passing the variable and sending the value to ajax call to PHP script.

I've got the data:

rnc.csv

DLRNC01
DLRNC02
DLRNC03
DLRNC04
DLRNC05
DLRNC06
DLRNC07
DLRNC08
DLRNC09
DLRNC10
DLRNC11
DLRNC12
DLRNC13
DLRNC14

code

<?php

    if (($handle = fopen("rnc.csv", "r")) !== FALSE) {
        $i=0;
        $values=array();
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

?>

<a href="javascript:void(0)"  onclick="pop(<?php echo "'".$data[0]."'"; ?>)" > <?php echo $data[0]; ?></a></br>
<?php               
    }
    fclose($handle);
    }
    else{
        echo "File not found";
    }
?>

<div id="container1"></div>

<script>

//even I cleared the chache using the cache:false

//for every click different variable is passing to the ajax call and than to PHP script
        function pop(rnc)
        {
            $.ajax({
            url: 'ajax1.php',
            type: "POST",
            cache: false,
            //dataType:'json',
            data:{rnc:rnc},
            success: function(data){

                        $("#container1").html(data);

                        setInterval(function(){

                                console.log(rnc);

                                $("#container1").html(data);

                        },2000);
                }
            });
        }

</script>

ajax1.php

<?php echo $_POST['rnc']; ?>

When I am passing the value to the rnc_value.php, after clicking the values of the file two to more , than the ajax call is echoing what ever the values having previous called displaying for every 5 seconds.

When I do console.log in the browser :

ajax.php:344 DLRNC01
ajax.php:344 DLRNC05
ajax.php:344 DLRNC07
ajax.php:344 DLRNC04
ajax.php:344 DLRNC01
ajax.php:344 DLRNC02
2 ajax.php:344 DLRNC05
ajax.php:344 DLRNC06
ajax.php:344 DLRNC07
ajax.php:344 DLRNC04
ajax.php:344 DLRNC01
ajax.php:344 DLRNC02

Please help me what is the solution..


回答1:


Alright, since our comments are going a little long, I'll move it to an answer box. So here is currently what you have...

function pop(rnc) {
    $.ajax({
        url: 'ajax1.php',
        type: "POST",
        cache: false,
        data:{rnc:rnc},
        success: function(data){
            $("#container1").html(data);

            setInterval(function() {
                console.log(rnc);
                $("#container1").html(data);
            },2000);
        }
    });
}

What I'm suggesting is:

//storage for the interval that will persist beyond the function call
var popInterval = null;
function pop(rnc) {
    //if it is not the first invocation of pop, need to kill the previous interval
    if (popInterval !== null) {
        clearInterval(popInterval);
    }

    //start the new interval with the new 'rnc' data provided and store the interval reference
    popInterval = setInterval(function() {
        $.ajax({
            url: 'ajax1.php',
            type: "POST",
            cache: false,
            data:{rnc:rnc},
            success: function(data){
                console.log(rnc);
                $("#container1").html(data);
            }
        });
    },2000);
}


来源:https://stackoverflow.com/questions/30099234/how-do-i-clear-previous-variable-in-cache-during-the-ajax-call-while-sending-var

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!