2015-06-22 83 views
-2

我想從使用jQuery的servlet調用JavaScript函數。從servlet調用JavaScript函數

這是我的JavaScript:

function showerrodailog(){ 

ShowDialogBox('Alert','No record found.','Ok','', 'GoToAssetList',null); 
} 

function ShowDialogBox(title, content, btn1text, btn2text, functionText,  parameterList) { 

      var btn1css; 
      var btn2css; 

      if (btn1text == '') { 
       btn1css = "hidecss"; 
      } else { 
       btn1css = "showcss"; 
      } 

      if (btn2text == '') { 
       btn2css = "hidecss"; 
      } else { 
       btn2css = "showcss"; 
      } 
      $("#lblMessage").html(content); 

      $("#dialog").dialog({ 
       resizable: false, 
       title: title, 
       modal: true, 
       width: '400px', 
       height: 'auto', 
       bgiframe: false, 
       hide: { effect: 'scale', duration: 400 }, 

       buttons: [ 
           { 
            text: btn1text, 
            "class": btn1css, 
            click: function() { 

             $("#dialog").dialog('close'); 

            } 
           }, 
           { 
            text: btn2text, 
            "class": btn2css, 
            click: function() { 
             $("#dialog").dialog('close'); 
            } 
           } 
          ] 
      }); 
     } 

我想打電話從一個servlet這個功能。我怎麼能這樣做,我嘗試從谷歌和找到這個代碼,但是,我打電話說它錯誤$未定義。

我用這個彈出警報消息。

/* ScriptEngineManager manager = new ScriptEngineManager(); 
       ScriptEngine javascriptEngine = manager.getEngineByExtension("js"); 

       // Get script from JS File 
       FileInputStream fileInputStream = new FileInputStream("F:\\workspace\\Userlogin\\WebContent\\js\\val.js"); 
       if (fileInputStream != null) { 
        BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream)); 

        javascriptEngine.eval(reader); 
        Invocable invocableEngine = (Invocable)javascriptEngine; 

        // Invoke javascript function named "sayHello" with parameter "Atul" 
        Object object = invocableEngine.invokeFunction("sayHello", "Atul"); 
        System.out.println("Result: " + object);*/ 

       // } 
+1

你打算在哪裏運行JavaScript? Servlet在服務器端執行,JavaScript(通常)在瀏覽器中執行。您可以根據某個事件觸發您的JavaScript加載到您的頁面中,例如頁面加載/文檔準備就緒?由於您使用的是jQuery,請查看:https://learn.jquery.com/using-jquery-core/document-ready/ –

+1

您在這裏有一個奇怪的要求。爲什麼你需要servlet執行並更新視圖? –

回答

0

您的嘗試是錯誤的,是由於以下原因:
A. jQuery和其他JS庫對DOM的工作,你必須在客戶端, 你的servlet運行在服務器端。
B.您的腳本不包含JQuery庫。

也許你的Servlet應該在它的輸出流上寫入響應給客戶端一個HTML +腳本嵌入在其中,這個腳本包含了JQuery的東西並使用它?