2016-12-30 1 views
-1

debug.html클라이언트 측 자바 스크립트에서 서버 측 함수를 실행하는 방법은 무엇입니까?

<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에서 할 일이 필요합니다. 버튼 (디버그 모드에서 chrom 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

내가 출력으로이 얻을 : 23,516,

내가 말을 잊었 내가 많이 봤, 일부 그렇게 유사하지 질문을 발견

[["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"]] 

,하지만 내 문제와 너무 비슷한 것 ... 어떤 제안? 이 작품

+1

실제로 요청을 보내지 않았습니까? 또한 응답은 즉시가 아닌 비동기식입니다. 예제 – UnholySheep

+0

에 대해서는 [MDN] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest)을 참조하십시오. 요청을 보내지 만 응답을 읽으려는 * 후에 * . – UnholySheep

+0

어떻게 요청을 보내지 않습니까? rest.open()와 그것의 세 번째 param은 비동기를 synchronus로 설정해야합니다. – newb

답변

0
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); 
}; 

... 들으 많은 ... 지금은 POST 방법 : 내가 버튼을 누르면 한 번

는, 내가 바란 결과를

희망을 얻을 수있는 유사한 작업을 이 사람이 앞으로 도움이됩니다.)

관련 문제