2012-06-26 96 views
0

我想創建腳本來編輯照片。我有那裏的文本框插入照片的標題和插入標題後,離開文本框它會更新數據庫。 它工作正常,當我只改變一張照片的標題,但當我改變更多的標題,然後我重新加載頁面,所有改變的照片都有相同的標題(這是最後插入)。 有人可以幫我請問什麼是錯的?用ajax和jquery發送數據 - textarea.live('blur')

還有就是我現在使用的代碼:

function UpdateTitle(idPhoto) { 
    var id = idPhoto; 
    $(document).ready(function(){ 
     $('textarea').live('blur',function() { 
      var titleVal = $(this).val();   

      $.ajax({ 
       type: "POST", 
       url: "changeTitle.php", 
       data: {title:titleVal , id:id}, 
       success: function(msg) { 
        $('.'+id).html(msg); 
       } 
      }) 

     }); 
    });  
} 

<textarea name='title' id='title' onchange='UpdateTitle($idPhoto);' rows='2' cols='22'>$title</textarea> 
+1

爲什麼你有在onchange上運行的函數然後調用blur? – Sammaye

+0

這*可能*是爲了確保模糊上的負載只在更改後才能完成? –

回答

2

更良好的編程尖的,而不是回答這個問題,因爲它已經有了答案,但是這將是清潔:

$('textarea').on('blur',function() { 
    var titleVal = $(this).val(), id = $(this).data('id');   

    $.ajax({ 
     type: "POST", 
     url: "changeTitle.php", 
     data: {title:titleVal , id:id}, 
     success: function(msg) { 
      $('#'+id).html(msg); 
     } 
    }) 
}); 

有了這個HTML:

<textarea name='title' id='title' data-id='$idPhoto' rows='2' cols='22'>$title</textarea> 

工作會好得多,並且會減少混淆。

+0

Alsome,它工作:)感謝您的幫助 –

1

使用$('#'+id)而不是$('.'+id)

而且使用val而不是html填寫一個文本。

所以基本上你應該有

$('#'+id).val(msg); 

(假設味精是直接目的含量)

live現已棄用。它建議你使用on,像這樣:

$(document).on('blur', 'textarea',function() { // something more precise than "document" would be better 
+0

是的,$('。'+ id)粘貼到一個html類,而#是一個唯一的html id。 –

+0

感謝您的幫助:) –