2011-09-01 33 views
2

我會通過一些java代碼(使用playframework),提供一些購物車functionality.The html頁面包含一些javascript(它使用jquery)這是我很少有知識,通過of.Looking在HTML中,我發現這樣的的JavaScript的onclick在HTML混亂

<table> 
... 
<td> 
<a href="" onclick="return addItem(${item.id});">buy</a> 
</td> 
... 
</table> 

表(模板使用$ {}獲得動態值通playframework模板語言) 在整個代碼,唯一addItem(itemId)方法我能找到的是在ShoppingCart它有這個簽名

public void addItem(Item item) { 
... 
} 

當我搜索的onclick,我找到了這個網頁 onclick doc,其給出的onclick作爲

onclick="SomeJavaScriptCode" 

去通所有的JavaScript代碼的語法類(它使用jQuery和ejohn-templating)我找不到任何方法,像'addItem'

那麼,onclick如何工作?它如何知道調用哪個方法?它會查看整個代碼(javascript和java)以查找一個匹配我THOD?

回答

1

首先,它只會查找JavaScript方法而不是java方法。其次是你可以在firebug中使用調試來達到調用的方法。

+0

感謝您的螢火蟲建議..我發現該功能。它嵌入在模板中,而不是作爲一個單獨的js文件,並且一直在查找javascripts文件夾。 –

3

某處你有你的JavaScript代碼中的addItem方法。 html中的代碼正在執行該方法,而不是您在java代碼中找到的addItem方法。

1

它比較簡單。 看起來你的Java代碼是在服務器端執行的,並且JavaScript(包括jQuery)在客戶端執行。所以$ {item.id}在服務器上執行,並且onClick會執行您在客戶端爲其提供的任何JavaScript代碼。

+1

這不總是正確的嗎? – Nivas

0

我不知道playframework,但addItem應該是javascript,而public void addItem(Item item)是java代碼。兩者都不相關

這個addItem javascript函數是在某處。如果您無法在您的代碼庫中找到它,則可以使用瀏覽器的控制檯(或Firefox上的firebug)查看此JavaScript功能。轉至腳本選項卡並搜索addItem。

0

除非通過AJAX或類似的東西,Javascript不能訪問服務器端的功能。即使那樣,它也不能直接訪問這些功能,而是訪問該功能的頁面。

在使用螢火蟲或谷歌瀏覽器控制檯的Javascript中仔細查看該功能。它應該在那裏。