ajax和javascript问题 - 函数不会多次触发或触发

时间:2012-01-04 17:58:02

标签: php jquery html ajax

我已经用jquery,PHP组建了一个支持ajax的聊天/社交网络 - 但是我遇到了javascript的问题。

我在主页面中有一个js文件,它将php加载到div容器中,js文件位于div下面。但是只有一个用于发布消息的函数似乎有效,但其他函数则没有。

我已经尝试将js文件与动态加载的php一起包含在ajax加载的末尾,这些函数运行正常,但我得到了相同消息/注释的多个条目。

我很确定它不是PHP,因为它似乎没有ajax介入工作正常。有办法解决这个问题吗?

这是可以正常工作的功能:

$("#newmsgsend").click(function(){

    var username = $("#loggedin").html();
    var userid = $("#loggedin").attr("uid");
    var message = $("#newmsgcontent").val();

    if(message == "" || message == "Enter Message..."){
        return false;
    }

    var datastring = 'username=' + username + '&message=' + message + '&uid=' + userid;

    //alert(datastring);

    $.ajax({
        type: "POST",
        url: "uploadmsgimage.php",
        data: datastring,

        success: function(data){
            document.newmessage.newmsgcontent.value="";

            //need to clear browse value too
            $('.msgimage').hide('slow');
            $('#addmsgimage').show('slow');
            $(".usermsg").html(data);
            $("#control").replaceWith('<input type="file" name="file"/>');
            $(".msgimage").remove();
        }
    });
});

这是其中一个不起作用的:

//like btn
$(".like").click(function(){

    var postid = $(this).attr("pid");

    var datastring = 'likeid=' + postid;

    $.ajax({
        type: "POST",
        url: "addlike.php",
        data: datastring,
        success: function(data){
            $(".usermsg").html(data); 
        }
    });
});

1 个答案:

答案 0 :(得分:1)

在您的帖子中,我猜测每条消息都有一个&#34; Like&#34;按钮,但你有1个主提交按钮。当消息动态加载时,您必须在它们进入时为每个消息分配.like,否则它将仅分配给现有消息。

问题,从我收集的内容(这是猜测)可能会使用live修复,因此jQuery会自动将click函数分配给所有消息,包括动态加载的消息;所以代替:

$(".like").click(function(){

试试这个:

$(".like").live('click', function(){

如果这还没有解决问题,那么我可能不会理解它是什么。