2011-12-20 57 views
2

我試圖用服務器數據更新所選html行中的內容。 我可以使用靜態數據或所有包含服務器數據的html行更新選定的html行。 我無法用服務器數據更新所選的html行。

$('td.table_with_server_update a').click(function(){  
    var var1=$(this).data('variable1'); 

這會更新所選的帶有靜態內容的html行,這是我想要做的,但是與服務器數據。

$(this).parent().prev().html('static content'); 

    $.post("server_side_process.php",{varone: var1}, function(data){    

選擇在HTML表中的所有元素,並與服務器的數據更新,這個工作,接下來我只想要「點擊」行與服務器數據

$('td.table_with_server_update').prev().html(data); //updates all html rows  

這就是我想我要更新但不知道如何表達這一點。 我想我的問題是$(本)回調函數

$(this).parent().prev().html(data); // no error in firebug, but doesn't rewrite html 

    });   
    });            
}); 

內...

<table border="1"> 
    <tr> 
    <td>rewrite this data </td><td class="table_with_server_update"><a href="javascript:void(0)" data-variable1='1'>Update this row</a> </td> 
    </tr> 
    <tr> 
    <td>rewrite this data</td><td class="table_with_server_update"><a href="javascript:void(0)" data-variable1='2'> Update this row</a></td> 
    </tr>  

回答

2

this$.post()回調指的jQuery XHR對象,而不是錨元素。您需要將this保存在錨元素的上下文中,並在$.post()回調中訪問它。

試試這個:

$('td.table_with_server_update a').click(function() { 
    // save "this" into $this variable directly as jQuery object 
    var $this = $(this); 
    var var1 = $this.data('variable1'); 

    $this.parent().prev().html('static content'); 

    $.post("server_side_process.php",{varone: var1}, function(data) { 
     $('td.table_with_server_update').prev().html(data); //updates all rows 
     // use saved "$this" = anchor instead of "this" = jQuery XHR object 
     $this.parent().prev().html(data); 
    }); 
}); 
0

其他的解決方案將工作得很好,但更好的方法是使用$.post$.ajax長格式,並設置context選項:

$('td.table_with_server_update a').click(function(){  
    var var1 = $(this).data('variable1'); 

    $.ajax({ 
     type: 'POST', 
     url: "server_side_process.php", 
     data: { varone: var1 }, 
     context: this, /* Set the context of ajax-related callbacks */ 
     success: function (data) { 
      /* "this" is now correct */ 
      $(this).parent().prev().html(data); 
     } 
    }); 
}); 

例如:http://jsfiddle.net/vUaUV/

相關問題