使用ajax和jquery发送数据 - textarea.live('blur')

时间:2012-06-26 08:20:40

标签: php javascript jquery ajax

我想创建脚本来编辑galery中的照片。我有文本框插入照片的标题,插入标题后,留下文本框,它将在数据库中更新。 它工作正常,当我只通过一张照片更改标题时,但当我更改更多标题然后我重新加载页面时,所有更改的照片都具有相同的标题(最后插入)。 请问有人可以帮我解决什么问题?

我现在使用的代码是:

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>

2 个答案:

答案 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>

会更好地工作,而且会减少混乱。

答案 1 :(得分:1)

使用$('#'+id)代替$('.'+id)

使用val代替html来填充文本区域。

基本上你应该有

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

(假设msg直接是预期的内容)

live现已弃用。建议您使用on,如下所示:

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