2012-01-11 66 views
0

我必須使用類「結果」和唯一ID加載多個HTML部分。jQuery中的JavaScript變量.load()參數

$('.result').load('/check.php', 
     {'id': this.id, 'url':'<?=$url?>'} 
    ); 

一個PHP腳本(check.php)將根據它獲得的參數(ID & URL)產生不同的HTML。我想通過this.id作爲參數,但頁面永遠不會被加載。

this.id是一個字符串對不對?如果我通過說'你好'來替換this.id,它會起作用。

+0

你認爲'這個'是什麼?除非這個代碼在JS對象的方法內,否則它將是'window'。 – Alnitak 2012-01-11 22:29:26

+0

它取決於你所擁有的代碼無法看到的上下文 – Esailija 2012-01-11 22:29:35

回答

0

如果您預計this.id是傳遞給.load的每個個體.result元素的ID,則這不起作用。您的代碼不會創建新的上下文,因此this將成爲.load調用之外的任何內容。

應該工作:

$('.result').each(function() { 
    $(this).load('/check.php', 
     {'id': this.id, 'url':'<?=$url?>'} 
    ); 
}); 

因爲.each調用並設置this到每個選中的元素,又將。

+0

我想象使用數據對象而不是使用''?id ='+ this.id'的好處是會使用正確的分隔符('?'或'&')。這是事實嗎?還是有更多的比? – Jasper 2012-01-12 00:11:51

+0

數據對象將發出一個POST並且?id =會給出一個GET方法。這不是問題,而是這個.id沒有明確定義的事實。謝謝@Alnitak – emiel187 2012-01-12 00:33:55

+0

@Jasper使用數據對象的真正好處是可以確保內容自動進行URL編碼。 – Alnitak 2012-01-12 08:16:59

0

this.id不一定是一個字符串。 javascript關鍵字this很漂亮quirky,所以要小心它。