2012-03-18 42 views
0
$('.chat').submit(function() { 
     $.post("", $(this).serialize(), function(response) { 
      $(this).closest('.stake_chat').prepend(???); 
     }); 

     return false; 
    }); 

在哪裏???是我想輸出聊天消息,名稱=「chat_message」字段的形式。jQuery的:抓取形式數據

的交序列化形式的數據,並將其傳遞到相同的部位;我需要在.stake_chat類中加入name =「chat_message」的數據。

回答

2

裏面的AJAX成功回調this是不是你認爲它是。這不是形式。它代表了xhr對象。你可以捕捉形式封閉,如果你想使用它的回調中:

$('.chat').submit(function() { 
    var $form = $(this); 
    $.post('', $form.serialize(), function(response) { 
     $form.closest('.stake_chat').prepend(response); 
    }); 

    return false; 
}); 

,或者使用與$.ajax上下文參數:

$('.chat').submit(function() { 
    var $form = $(this); 
    $.ajax({ 
     url: '', 
     type: 'POST', 
     data: $form.serialize(), 
     context: $form, 
     success: function(response) { 
      this.closest('.stake_chat').prepend(response); 
     } 
    }); 

    return false; 
}); 

而獲得這就是形式與內部的輸入一個給定的名稱,你可以使用以下的選擇:

$('input[name="chat_message"]', $form) 
+0

你可能想看看'在context'屬性'POST'大brother-'ajax' – gdoron 2012-03-18 21:49:43

+0

@DarinDimitrov哦,謝謝,我忘了個在。雖然我的問題不是真的存在。請參閱:http://jsfiddle.net/cALCm/我想輸出剛剛在頂部的div元素中輸入的文本。事情是有更多和.stake_chats這樣,因此我不能只做$('。stake_chat')。prepend();因爲它會通過.stake_chat進入每個元素。我只想在表格上方(最接近)的.stake_chat前面加上。我如何預先輸入消息? – Karem 2012-03-18 21:50:33

+0

$('input [name = chat_message]')。val()不會工作,因爲我想要的是在$ form中的輸入,而不是所有的輸入。 – Karem 2012-03-18 21:50:42