0

ここで問題があります。Imが1回だけ呼び出したにもかかわらず、jquery.load関数が2回実行されているようです。これが私のコードです:

function updateRowItem(idIn){
if (ready) {
    id = idIn
    $("#controlPanelResult").css("background-color", "");
    var query = {};

    var tid = id.replace("@", "\\@");
    tid = tid.replace(".", "\\.");

    var value =  $('#'+tid).text();

    //var value =  decodeURI(document.getElementById(id).innerHTML);

    //if (value == "<br>"){
    //  value = "NULL"
    //}
    //value = value.replace("&nbsp;"," ")
    //value = value.replace("&amp;","&")

    var split = id.split('@');
    var temp = split[0];
    var uuid = split[1];
    var temp2 = temp.split('.');
    var tableName = temp2[0];
    var item = temp2[1];

    query['table_name'] = tableName;
    query['uuid'] = uuid;
    query[item] = value;

    var tid = id.replace("@", "\\@");
    tid = tid.replace(".", "\\.");

    $.ajax({
    async: false,
    type: "POST",
    //url: '/admin/updateRow?table_name=' + tableName + "&uuid=" + uuid +"&" +     item + "=" + value,
    url: '/admin/updateRow',
    data: query,
    success: function(data) {
            if (data == "1"){ 

                alert ("Hellooo!")//This alert only and always pops up once

                    $('#'+tid).empty().load(showRowsUrl + " #" + tid,function (status) { 
                        alert (status) // This alert pops up first once, then twice, then four times, then eight etc....

                        $("#"+tid).animate({backgroundColor: '#70DB70'}, 'slow');
                        $('#controlPanelResult').html("Updated: " + id);
                        $("#controlPanelResult").animate({ backgroundColor: '#70DB70'}, 'slow');
                        $("#"+tid).animate({backgroundColor: 'white'}, 'slow');
                    });

            } else {
                $('#mainRows').load(showRowsUrl, function() {
                    $("#"+tid).animate({backgroundColor: 'red'}, 'fast');
                    $('#controlPanelResult').html(data);
                    $("#controlPanelResult").animate({backgroundColor: 'red'}, 'fast'); 
                });
            }               
        }
    });
}
}

これにより、divの内容が絶えず繰り返されます。これを理解するのに助けていただければ幸いです。

4

1 に答える 1

3

.load()問題のある呼び出しを次のように置き換えます。

$.get(showRowsUrl, function(data) {
    $('#'+tid).replaceWith($('#'+tid,'<div>'+data+'</div>'));

    $("#"+tid).animate({backgroundColor: '#70DB70'}, 'slow');
    $('#controlPanelResult').html("Updated: " + id);
    $("#controlPanelResult").animate({ backgroundColor: '#70DB70'}, 'slow');
    $("#"+tid).animate({backgroundColor: 'white'}, 'slow');
});

説明:.load要素をそれ自体にロードしているため、その後、同じIDを持つ2つの要素がネストされています。その後、再度実行する.loadと、そのIDを持つ両方の要素で実行されます。

于 2012-06-30T20:47:34.423 に答える