2011-07-11 125 views
17

我創建了一個java類的內容方法返回一個String,我的問題是如何在我的javascript代碼中調用此函數以使用java方法返回的值。我想調用嵌入在瀏覽器中的客戶端Java代碼。在javascript代碼中調用java方法

這裏是什麼即時通訊談論的爲例:我有

在我的網頁

一個javascript代碼,這裏是它的一些:

function createChartControl(htmlDiv1) 
{ 
    // Initialize Gantt data structures 
    //project 1 
    var parentTask1 = new GanttTaskInfo(1, "Old code review", new Date(2010, 5, 11), 208, 50, ""); 
...................... 

我想創建一個Java類內容的方法向這個JavaScript函數「GanttTaskInfo」提供數據。例如 爲獲取名稱的函數,獲取id和日期。 以及我認爲這次我很清楚:D 我搜索了一種方法來調用JavaScript中的java方法,並且我發現了applets,正如你所說的,但我認爲它對我沒有用。 再次感謝

+1

問題需要澄清。 –

+3

什麼是Java代碼?小程序嗎?網絡服務? JSP?什麼JavaScript代碼?在瀏覽器中? Node.js的?你如何期待數據在兩者之間?他們在運行什麼電腦? – Quentin

+0

這是蘋果和橘子。 Java和Javascript沒有固有的關係,它們只是兩種語言,它們有相似的語法和(不幸的)相似的名字。您需要提供更多關於問題背景的信息。這是一個在應用程序服務器上運行的servlet還是它是一個小程序? Javascript是作爲由servlet生成的網頁的一部分執行還是作爲服務器端JavaScript? – pap

回答

21

當它在服務器端時,使用Web服務 - 可能是RESTful和JSON。

  • 創建一個Web服務(例如用Tomcat
  • 從JavaScript調用它的URL(例如with JQuery或道場)

當Java代碼中的小程序,你可以使用JavaScript橋。 Java和JavaScript編程語言之間的橋樑,非正式地稱爲LiveConnect,在Java插件中實現。以前Mozilla特有的LiveConnect功能(例如調用靜態Java方法,實例化新的Java對象和引用JavaScript中的第三方包)現已在所有瀏覽器中提供。

以下是文檔示例。看看methodReturningString

Java代碼:

public class MethodInvocation extends Applet { 
    public void noArgMethod() { ... } 
    public void someMethod(String arg) { ... } 
    public void someMethod(int arg) { ... } 
    public int methodReturningInt() { return 5; } 
    public String methodReturningString() { return "Hello"; } 
    public OtherClass methodReturningObject() { return new OtherClass(); } 
} 

public class OtherClass { 
    public void anotherMethod(); 
} 

網頁和JavaScript代碼:

<applet id="app" 
     archive="examples.jar" 
     code="MethodInvocation" ...> 
</applet> 
<script language="javascript"> 
    app.noArgMethod(); 
    app.someMethod("Hello"); 
    app.someMethod(5); 
    var five = app.methodReturningInt(); 
    var hello = app.methodReturningString(); 
    app.methodReturningObject().anotherMethod(); 
</script> 
-7

Java是服務器端語言,而JavaScript是客戶端語言。兩者都無法溝通。如果您使用Java設置了一些服務器端腳本,則可以在客戶端上使用AJAX以向其發送異步請求,從而調用任何可能的Java函數。例如,如果您使用jQuery作爲js框架,您可以查看$.ajax()方法。或者如果你想用純javascript,here's a tutorial來做。

+16

的問題否[Java是客戶端語言](http://java.sun.com/applets/),而[JavaScript是服務器端語言](http://en.wikipedia.org/wiki/Server-side_JavaScript)。 – Quentin

+1

他們可以 - 我認爲Nadya可能意味着腳本化applet的場景,其中Javascript確實可以調用Java世界,反之亦然。但無論如何,這個問題太詳細了,不知道;) – emboss

+1

是的,小程序仍然存在,我每週使用一個(儘管我寧願它沒有這樣實現)。 – Quentin