2014-09-04 64 views
0

我在頁面上有許多表。這些內容是由一個php腳本生成的,該腳本給出了一個關鍵字(kuid - 從數據庫加載)並使用jQuery加載。

在網頁上,他們是這個樣子:

<table class="className" kuid="someInteger"></table> 

這裏是jQuery的我想出了:

jQuery('.className').each(function(){ 
    var kuid = jQuery(this).attr('kuid'); 
    jQuery.post('data.php',{kuid: kuid},function(data){ 
    jQuery(this).html(data); 
    }); 
}); 

和data.php:

$kuid = $_POST['kuid']; 
echo 'Content for this ID: '.$kuid.'!'; 

然而它會拋出一個'Uncaught TypeError'。 Apperently我不允許使用$(this)關鍵字,但我不明白爲什麼。

此代碼的工作有點:

var kuid = jQuery('.className').attr("kuid"); 
jQuery.post(data.php',{kuid: kuid},function(data){ 
    jQuery('.className').html(data); 
}); 

,但相同的內容給每個表基於「kuid」第一次出現的。

回答

1

u可以使用jQuery函數$ .proxy

jQuery('.className').each(function(){ 
    var kuid = jQuery(this).attr('kuid'); 
    jQuery.post('data.php',{kuid: kuid},$.proxy(function(data){ 
    jQuery(this).html(data); 
    }, this)); 
}); 
0

睡前內post只是分配$(this)給一個變量:

jQuery('.className').each(function(){ 
    var kuid = jQuery(this).attr('kuid'), 
     that = jQuery(this); 

    jQuery.post('data.php',{kuid: kuid},function(data){ 
    that.html(data); 
    }); 
}); 
+3

你可以解釋爲什麼原來沒有工作過? – 2014-09-04 15:19:29

+0

這有一個意想不到的副作用。只有頁面上的最後一張表才能獲取內容 - 它通過所有kuid快速閃爍。有趣的是,由於POST請求,它是隨機的,哪一個最終位於頂部。大部分時間是最後一次,但有時候是倒數第二次。 – glaux 2014-09-05 08:16:31