如何从客户端JavaScript运行服务器端函数?
问题描述:
debug.html如何从客户端JavaScript运行服务器端函数?
<head>
<script src="debugBoot.js"></script>
</head>
<body onload="init()">
<button onclick="alert(dss.getParameters())">Get Params</button>
</body>
debugBoot.js
var dss = {};
var INVALID_PARAM = -1;
function init() {
dss.getParameters = function(){
var rest=new XMLHttpRequest();
rest.open("GET", "http://localhost:8080/MW-war/rest/mw/enumerateParams", false);
var data=rest.responseText;
var jsonResponse = JSON.parse(data); //line 11
console.log(jsonResponse["Data"]);
rest.send(jsonResponse);
return JSON.parse(data);
};
}
MWRest(接口)
@GET
@Path("/enumerateParams")
@Produces(MediaType.APPLICATION_JSON)
public String[][] enumerateParams();
myJavaClass
@Override
public String[][] enumerateParams() {
// TODO Auto-generated method stub
return new String[][] { { "" + PATIENT_ID, "PATIENT_ID" }, { "" + AGE, "AGE" },
{ "" + BLOOD_PRESSURE, "BLOOD_PRESSURE" }, { "" + GENDER, "GENDER" },
{ "" + SMOKING_HABITS, "SMOKING_HABITS" }, { "" + DIET_FRUITS_VEGGIES, "DIET_FRUITS_VEGGIES" },
{ "" + CHOLESTEROL, "CHOLESTEROL" }, { "" + ALCOHOL, "ALCOHOL" }, { "" + ACTIVITY, "ACTIVITY" },
{ "" + QUIT_SMOKING, "QUIT_SMOKING" }, { "" + DIET_CEREAL_FIBRE, "DIET_CEREAL_FIBRE" } };
}
我需要做debugBoot.js中的东西 一旦我按下按钮(调试模式下的铬f12),我跳到debugBoot.js并通过f10进行操作,当我来到线
var data=rest.responseText;
数据是空的... 当我去到线
var jsonResponse = JSON.parse(data);
有一个错误:
VM5402:1 Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at Object.dss.getParameters (debugBoot.js:11)
at HTMLButtonElement.onclick (debug.html?scriptId=2:18)
我忘了说: 一旦我这个链接去:
http://localhost:8080/MW-war/rest/mw/enumerateParams
我得到这个作为输出:
[["0","PATIENT_ID"],["1","AGE"],["2","BLOOD_PRESSURE"],["3","GENDER"],["4","SMOKING_HABITS"],["5","DIET_FRUITS_VEGGIES"],["6","CHOLESTEROL"],["7","ALCOHOL"],["8","ACTIVITY"],["9","QUIT_SMOKING"],["10","DIET_CEREAL_FIBRE"]]
我GOOGLE了很多,并发现了一些不那么类似的问题,但没有太多类似于我的问题......任何建议?
答
dss.getParameters = function(){
var rest=new XMLHttpRequest();
rest.open("GET", "http://localhost:8080/MW-war/rest/mw/enumerateParams", false);
rest.send(null);
if (rest.status === 200) {
console.log(rest.responseText);
}
return JSON.parse(rest.responseText);
};
这个工程... THX很多......现在我有一个POST方法:)
一次我按下按钮,我得到的结果,希望
希望类似的任务这有助于将来的人;)
你实际上并没有发送请求,是吗?此外,响应将是异步的,而不是瞬时的。请参阅[MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest) – UnholySheep
好吧,您正在发送请求,但是*之后*您尝试读取响应。 – UnholySheep
我怎么不发送请求?与rest.open()和第三个参数在它应该设置异步synchronus,不应该吗? – newb