2011-06-17 163 views
0
**<%@ page import="com.ampliflex.commons.Ampliflex" %>** 
<html> 
<head> 
<title>Search Result </title> 

<style> 
img{ height: 150px; float: left; border: 3;} 
div{font-size:10pt; margin-right:150px; 
margin-left:150px; } 
</style> 
<script type="text/javascript" src="jquery-1.6.1.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    **Ampliflex ms = Ampliflex.getInstance(); 
    String mailHost = ms.getMailServer();** 
// This function get the search results from Solr server 
    $("#submit").click(function(){ 
     var query=getquerystring() ; //get the query string entered by user 

在這裏,我導入了一個java類並實例化它的對象。但對象不可見和腳本正在生成一個錯誤「缺少;之前聲明 Ampliflex ms = Ampliflex.getInstance();」...我不明白爲什麼如此。在javascript中實例化一個對象

編輯:

的問題是我需要在JavaScript與訪問此郵件主機。如果我在<%..%>中實例化對象,那麼mailHost是局部變量,我無法在JavaScript標記中訪問。有沒有解決方案。

+1

你正試圖從客戶端JS實例化一個服務器端對象。再想一想。 – asgs 2011-06-17 05:21:17

+1

Java在哪裏(何時)運行? JavaScript在哪裏(和何時)運行?這就是答案。服務器端* Java scriptlet *標籤可以發出JavaScript代碼。但是,* scriptlet在HTML發送到客戶端之前運行。 – 2011-06-17 05:27:02

回答

2

您試圖實例化Java對象,但是,沒有一個scriptlet

應該像

<% 

    Ampliflex ms = Ampliflex.getInstance(); 
    String mailHost = ms.getMailServer(); 
%> 

$(文件)。就緒(函數(){// 郵件主機 一些事情VAR郵件主機= '<%=郵件主機%>';

//這個函數得到Solr的服務器搜索結果 $( 「#提交」)點擊(函數(){VAR QUER y = getquerystring();

而且,如果您想要在頁面加載後調用方法,請嘗試使用ajax。這裏

+0

是不是可以在java腳本標籤中實例化對象? – Romi 2011-06-17 05:23:54

+0

你不能直接調用!您需要使用小程序或向服務器發送請求! – 2011-06-17 05:28:56

+0

問題是我需要在JavaScript中訪問此郵箱主機。如果我實例化對象在<%.. %>然後mailHost是局部變量,我不能訪問JavaScript標記。有沒有解決方案。 – Romi 2011-06-17 05:34:55

1

問題是這一行:

Ampliflex ms = Ampliflex.getInstance(); 

    String mailHost = ms.getMailServer(); 

這實際上是Java代碼。這不能在客戶端執行。使用scriptlet標籤。