導航:首頁 > 編程語言 > js調用java返回值

js調用java返回值

發布時間:2022-07-06 18:49:59

㈠ 在js文件中怎麼獲得java方法返回的值

<script type="text/javascript">
// 這里放置數組

var array = new Array();

<% String[] params = (String[])request.getSession().getAttribute("您的存入key");
for(int i = 0; i < params.length; i++){%>
array.push(<%=params[i]%>);

<%}%>

</script>

㈡ 如何在JAVASCRIPT調用android JAVA函數

一、網頁的JS代碼調用ANDROID中JAVA代碼的方法
在網頁中調用java代碼、需要在webview控制項中添加javascriptInterface
contentWebView = (WebView) findViewById(R.id.webview);
//啟用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js對象名");

在Activity中定義一個要被js調用的方法、src為js傳遞過來的參數、如果沒有不傳也可以
public void jsFunction(final String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里對Android應用的UI進行處理
}
});
}

在網頁中、只需要像調用js方法一樣、進行調用就可以
<a onClick="window.js對象名.jsFunction(´hello world´)" >
點擊調用java代碼並傳遞參數
</a>

二、ANDROID中JAVA代碼調用網頁的JS代碼的方法

Java代碼調用js並傳參其實是通過WebView的loadUrl方法去調用的、只是參數url的寫法不一樣而已

// 無參數調用
contentWebView.loadUrl("javascript:javacalljs()");
// 傳遞參數調用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "´hello world´" + ")");

三、JAVA和JS交互注意事項
1、Java 調用 js 裡面的函數、效率並不是很高、估計要200ms左右吧、做交互性很強的事情、這種速度很難讓人接受、而js去調Java的方法、速度很快、50ms左右、所以盡量用js調用Java方法
2、Java 調用 js 的函數、沒有返回值、調用了就控制不到了
3、Js 調用 Java 的方法、返回值如果是字元串、你會發現這個字元串是 native 的、轉成 locale 的才能正常使用、使用 toLocaleString() 函數就可以了、不過這個函數的速度並不快、轉化的字元串如果很多、將會很耗費時間
4、網頁中盡量不要使用jQuery、執行起來需要5-6秒、最好使用原生的js寫業務腳本、以提升載入速度、改善用戶體驗。

㈢ 如何在js調用java方法並取回返回值

通過使用 AJAX 技術 ,去完成 的,具體參考 jquery
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
~~~~~~~~~~
~~~~~~

㈣ 在js中調用java 函數返回類型為arraylist ,在js中怎樣轉換為array數組類型呢

jsList這個為你的arrylist
<script type="text/javascript">

function initPages()
{
var codes = new Array();

// 將JAVA中的數組轉換成JS 的數組
<%
if(jsList!=null)
{
for(int i=0;i<jsList.size();i++)
{
%>
codes[<%=i%>]='<%=jsList.get(i)%>';
<% }
}
%>

</script>

㈤ js 怎麼調用JAVA類的方法具體代碼

用ajax的方法.

首先將要調用的類名和方法名作為參數傳給某個servlet.這一步的方法有許多種,用框架,或者直接用xmlHttpRequest對象.

另外,要調用的類名和類的完整包路徑最好寫在配置文件里
這里假設類名為Hello,方法名為sayHello,並且sayHello方法不帶參數,類路徑為com.demo.Hello

配置文件AjaxConfig.properties
Hello = com.demo.Hello

於是傳入的參數為 class=Hello&method=sayHello
在servlet中作如下處理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
.
讀取配置文件,取出className所對應的值放入classPath變數中(這一步方法有很多種,怎麼讀配置文件,可以網上找資料,很多的,我就不細寫了)
.
Class c=Class.forName(classPath);//載入你所指定的類
Class param[]=new Class[0];//方法的參數為0個
Method m=null;
String returnValue=null;//返回值
try {
m = c.getMethod("sayHello",param);//獲取你所指定的類中的指定方法
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
returnValue=(String)m.invoke(c.newInstance(), new Object[0]);//調用你所指定的方法
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最後,將returnValue的值返回給客戶端即可
類Hello.java

public class Hello
{
public String sayHello()
{
return "hello";
}
}

不明白的加67919823,我們一起討論呀

㈥ 如何在Android平台上使用JS直接調用Java方法

在Cocos2d-js 3.0beta中加入了一個新特性,在Android平台上我們可以通過反射直接在js中調用Java的靜態方法。使用方法很簡單:

那麼這個Test類的完整類名應該是org/cocos2dx/javascript/Test,注意這里必須是斜線/,而不是在Java代碼中習慣的點。

(2)方法名

方法名很簡單,就是方法本來的名字,例如sum方法的名字就是sum。

(3)方法簽名

方法簽名稍微有一點復雜,最簡單的方法簽名是()V,表示一個沒有參數沒有返回值的方法。其他一些例子:

(I)V表示參數為一個int,沒有返回值的方法;

(I)I表示參數為一個int,返回值為int的方法;

(IF)Z表示參數為一個int和一個float,返回值為boolean的方法;

現在有一些理解了吧,括弧內的符號表示參數類型,括弧後面的符號表示返回值類型。因為Java是允許函數重載的,可以有多個方法名相同但是參數返回值不同的方法,方法簽名正是用來幫助區分這些相同名字的方法的。

(4)參數

參數可以是0個或任意多個,直接使用js中的number,bool和string就可以。

(5)使用示例

將會調用上面的Test類中的靜態方法:

//調用hello方法

jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test","hello","(Ljava/lang/String)V","thisisamessagefromjs");

//調用第一個sum方法

varresult=jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test","sum","(II)I",3,7);

cc.log(result);//10

//調用第二個sum方法

varresult=jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test","sum","(I)I",3);

cc.log(result);//5

(6)注意

另外有一點需要注意的就是,在android應用中,cocos的渲染和js的邏輯是在gl線程中進行的,而android本身的UI更新是在app的ui線程進行的,所以如果在js中調用的Java方法有任何刷新UI的操作,都需要在ui線程進行。

例如,在下面的例子中會調用一個Java方法,彈出一個android的Alert對話框。

//給我們熟悉的AppActivity類稍微加點東西

{

privatestaticAppActivityapp=null;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

app=this;

}

(finalStringtitle,finalStringmessage){

//這里一定要使用runOnUiThread

app.runOnUiThread(newRunnable(){

@Override

publicvoidrun(){

AlertDialogalertDialog=newAlertDialog.Builder(app).create();

alertDialog.setTitle(title);

alertDialog.setMessage(message);

alertDialog.setIcon(R.drawable.icon);

alertDialog.show();

}

});

}

}


在js中調用

jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity","showAlertDialog","(Ljava/lang/String;Ljava/lang/String;)V","title","hahahahha");

這樣調用就可以看到一個android原生的Alert對話框了。

㈦ js調用ajax請求java後台返回數據怎麼處理。

你後台返回的就是一個json數據,你可以直接用的。

json就是一個key-value形式的字元串,你可以通過json.ADDRESS獲取address的值

歡迎追問。

祝好!

最後附上一個解析json的方法

㈧ 在html頁面中如何用js調用java類

在html頁面中,使用js調用java類要使用ajax,具體方法步驟如下:
1、將要調用的類名和方法名作為參數傳給某個servlet.這一步的方法有許多種,用框架,或者直接用xmlHttpRequest對象;
2、要調用的類名和類的完整包路徑最好寫在配置文件里,這里假設類名為Hello,方法名為sayHello,並且sayHello方法不帶參數,類路徑為com.demo.Hello。
3、配置文件AjaxConfig.properties
Hello = com.demo.Hello
4、傳入的參數設置為 class=Hello&method=sayHello
在servlet中作如下處理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
5、讀取配置文件,取出className所對應的值放入classPath變數中,
Class c=Class.forName(classPath);//載入你所指定的類
Class param[]=new Class[0];//方法的參數為0個
Method m=null;
String returnValue=null;//返回值
try {
m = c.getMethod("sayHello",param);//獲取你所指定的類中的指定方法
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
returnValue=(String)m.invoke(c.newInstance(), new Object[0]);//調用你所指定的方法
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
6、將returnValue的值返回給客戶端即可
類Hello.java

public class Hello
{
public String sayHello()
{
return "hello";
}
}

㈨ 如何在js里定義的一個var test=調用java代碼,並取得返回值呢

使用AJAX調用吧

方法很多 自己寫可以,使用框架也行,如DWR什麼的

我使用EXT框架

這樣子調用:

Ext.Ajax.request({
url:spring action地址,/

method:'post',

params:{}, // 提交參數

success: function(response, options)

{

var test= Ext.util.JSON.decode(response.responseText);
//responseText就是你後台生成的json對象
if(responseArray.success==true)

{

Ext.example.msg('提示', '數據保存成功');

}
else{

Ext.Msg.alert('錯誤', responseArray.reason);
}

}

failure:function(response,options)

{

Ext.Msg.alert('警告',"數據處理錯誤原因\"+response.responseText);
}

});

}

閱讀全文

與js調用java返回值相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:419
個人所得稅java 瀏覽:760
多餘的伺服器滑道還有什麼用 瀏覽:189
pdf劈開合並 瀏覽:26
不能修改的pdf 瀏覽:750
同城公眾源碼 瀏覽:488
一個伺服器2個埠怎麼映射 瀏覽:297
java字元串ascii碼 瀏覽:78
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:332
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491