2017-04-15 7 views
0

Ich habe eine Seite, in der mehrere Beiträge aus der Datenbank kommen und auf diesen Beitrag kann man kommentieren beim Schreiben von Kommentaren im Textbereich ich mache einige Ajax Anruf auf POST-Taste derzeit habe ich nur 5 Beiträge in Meine Startseite Ausgabe ist POST-Taste für nur den ersten Beitrag in Ordnung arbeitet ich den Antworttext sehe vor Parsen und nach dem Parsen, aber wenn ich auf anderem Post POST-Button klicken meine Konsole meinen Code zeigen, tut irgend etwas herenJquery Post Button

{' 
$(document).ready(function() 
{ 
//this will fire only when page is fully loaded 
$('#comment-post-btn').each(function() 
{ 
    $(this).click(function() 
    { 
console.log("Button is working fine"); 
comment_insert_btn_click(); 
    }); 
}); 
function comment_insert_btn_click() 
{ 
var _comment=$('#comment-post-text').val(); 
var _userId=$("#userId").val(); 
var _userName=$("#userName").val(); 
if(_comment.length > 0 && _userId!=null) 
{ 
console.log(_comment + "UserId: " + _userId + "UserName: " + _userName); 
$.post("comment-insert.php" , 
    { 
     task : "comment-insert", 
     userId : _userId, 
     comment: _comment 
    }, 
     function(data)   
     {  
      console.log("ResponseTextBeforeParsing " + data); 
      data = JSON.parse(data) 
      console.log("ResponseTextAfterParsing " + data); 

      comment_insert(data); 
      console.log("ResponseTextAfterParsing " + data); 

     } 
    ) 
$('.comment-insert-container').css('border' , ' 1px solid #fffff0'); 
} 
else 
{ 
$('.comment-insert-container').css('border' , ' 1px solid #ff0000'); 
console.log("the text area was empty"); 
} 

$('#comment-post-text').val(""); 
} 
'} 
+1

Sie können keine ID für mehrere DOM-Elemente verwenden. Ändern Sie sie in Klassen –

+0

Element-ID muss eindeutig sein. Duplikate sind nicht gültig. – Jasen

+0

Wenn ich Sie richtig mache, dann kann ich keine Klassen verwenden, da die Posts aus der Datenbank kommen, und ich muss diese Schaltfläche für jeden Post aus der Datenbank –

Antwort

0

Sie müssen die Klicks nicht mit .each() registrieren und doppelte ID sind nicht gültig. Entweder entwickeln Sie ein System, um eine eindeutige ID zu generieren, oder Sie verwenden das Klassenattribut.

Da es so aussieht, als ob Sie versuchen, Formularwerte zu erhalten, fangen Sie stattdessen die Formularübermittlung ab.

$("form.my-form-class").on("submit", function(e) { 
    e.preventDefault(); 

    var form = $(this); 
    var data = form.serialize(); 
    var comment = form.find("textarea[name='comment']").val(); 

    $.ajax({ 
     ... 
    }); 
}); 
+0

aktivieren Ich muss dies in einem einzigen Ereignis tun können Sie mir bitte sagen, wie Ich benutze Klassenattribut hier ??? –

+0

Ich verstehe deine Frage nicht. Was meinst du mit Einzelveranstaltung? – Jasen

+0

Wie kann ich die ID meiner post-Taste dynamisch ändern, so dass es für jeden Beitrag aus der Datenbank funktioniert und was ich anstelle von # comment-post-btn in jquery setzen sollte, wo ich zuvor ID der Schaltfläche –