jQuery AJAX替换返回数据中的单词有时无法正常工作

时间:2015-01-29 09:07:38

标签: jquery ajax replace

我需要从返回的AJAX数据中替换一些单词。我是这样做的:

function loadfile(){
    $.ajax({
        type: 'post',
        url: 'donachrichten.php',
        data: {mach: "loadfile", kontaktfile: kontaktfile},
        success: function(data){
                var kontent = data;

                var user1 = $(".user1").attr("id");
                var user2 = $(".user2").attr("id");
                var profilpic1 = $(".profilpic1").attr("id");
                var profilpic2 = $(".profilpic2").attr("id");

                var data1 = kontent.replace(new RegExp(user1, "g"), profilpic1);
                var data2 = data1.replace(new RegExp(user2, "g"), profilpic2);
                $("#chatnow").html(data2);
        }
    });
} 

70%的情况下工作正常,但在30%chatnow div中充满undefinedundefined ....

这可能是什么问题?

修改

这是在loadfile之前调用的:

function selectkontakt(z){
    $("#loadnew").empty();
    $("#loadold").empty();
    kontaktfile = $(z).attr('id');
    kontakte(); // the user1/user2 and profilpic1/profilpic2 classes are comming from here, also though AJAX
    loadfile();
    $("#textarea").show();
    $('#usermsg').focus();
}

所以我觉得这只是一个糟糕的时机,有没有办法解决时机问题?

2 个答案:

答案 0 :(得分:0)

可能是由于id或元素不存在。如果您使用ajax加载该用户元素。在元素加载/ ajax成功后使用此函数。

答案 1 :(得分:0)

我这样解决了:

function selectkontakt(z){
    $("#loadnew").empty();
    $("#loadold").empty();
    kontaktfile = $(z).attr('id');
    kontakte();
    loadfile().done(kontakte); // HERE
    $("#textarea").show();
    $('#usermsg').focus();
}

因此,时间不能再被打破:)