我已经用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);
}
});
});
答案 0 :(得分:1)
在您的帖子中,我猜测每条消息都有一个&#34; Like&#34;按钮,但你有1个主提交按钮。当消息动态加载时,您必须在它们进入时为每个消息分配.like,否则它将仅分配给现有消息。
问题,从我收集的内容(这是猜测)可能会使用live修复,因此jQuery会自动将click函数分配给所有消息,包括动态加载的消息;所以代替:
$(".like").click(function(){
试试这个:
$(".like").live('click', function(){
如果这还没有解决问题,那么我可能不会理解它是什么。