2012-01-04 14 views
1

jquery、PHPと一緒にajaxで動くチャット/ソーシャルネットワークをまとめましたが、javascriptに問題があります。ajaxとjavascriptの問題 - 複数の回の発砲や発砲機能がありません

メインページにjsファイルがあり、これはdivコンテナにPHPをロードします.jsファイルはdivの下にあります。しかし、msgをポストするための関数は1つしか動作しないように見えるが、他のものはそうではない。

私は、動的にロードされたphpを持つjsファイルをajaxの最後にロードしようとしましたが、機能はうまく動作しますが、同じメッセージ/コメントの複数のエントリを取得しています。

私はPHPではないと確信しています。これを解決する方法はありますか?

これが正常に動作機能である:

$("#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

Firefox + Firebugを使用して、[NET]タブを開いて、リクエストが何をしているのかを確認します。 –

+1

Jqueryのバブル効果によるものかもしれません。 stopimmediateprepagation –

+3

ベストを試してください。空白。これまで – jbabey

答えて

1

あなたのポストから、私は、各メッセージは、Aがあることを推測しています"Like"ボタンがありますが、1つのメイン送信ボタンがあります。メッセージが動的に読み込まれるときには、それが来るときに各メッセージに.likeを割り当てる必要があります。そうでなければ、それは既存のメッセージにのみ割り当てられます。

私が収集したもの(これは推測です)の問題はおそらくライブを使用して修正されるため、動的にロードされたメッセージを含むすべてのメッセージにjQueryが自動的にクリック機能を割り当てます。その代わりに:

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

これを試してみてください:

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

をこれで問題が解決しない場合は、私はおそらくそれが何であるかを理解していませんよ。

+1

注:jQuery 1.7の時点で、.live()メソッドは非推奨になりました。 jQueryの古いバージョンのユーザーは、.live()に優先して.delegate()を使用する必要があります。 – CronosS

+0

素晴らしい.live誰が知っていた!次に、私はどのようにコメントセクションの作業を取得する方法を理解する必要があります! – ChrisSherwood

+0

@CronosS、ありがとう!私のライブイベントをhttp://api.jquery.com/on/に変更するためのいくつかのテストがあるようです。 jQuery 1.3.2以降のライブドキュメンテーションは見ていません。 "オン"イベントのように見えるイベントは、ドキュメント全体ではなく特定の領域を見るように設計されているので、より効率的でなければなりません。 –

関連する問題