2013-01-07 4 views
0

Android 용 phonegap 앱을 만들고 있습니다. json 문자열을 받고 구문 분석하려고합니다. 아주 작은 데이터입니다. {"result":{ "node":"32"} }json 데이터를 구문 분석 할 수 없습니다.

alert(request.responseText)
결과를 사용 IAM 경우 표시하지만 호출 기능이 request.responseText를 반환하고 var x= somefunction(); x contains undefined.

var jsonObj = sendPostRequest(url,nurl); 
    console.log(jsonObj+""); // GIVES UNDEFINED HERE AT THIS LINE BUT SAME STATEMENT WORKS IN sendPostRequest() 
    if(jsonObj){ 
    var Json = JSON.parse(jsonObj); 
    console.log(json); 
    document.getElementById("gnodei").innerHTML= json.result.wEventId; 
    } 

같은 변수 거기 모으면 I는이 응답을 수집 할 somefunction() 내부에서 변수 y를 호출하지만이 데이터를 호출 함수에 반환하면 아무것도 도달하지 않습니다. 위의 json 데이터 x를 사용하지만 작동하지 않습니다.

를 제안하십시오.

편집 :`기능 sendPostRequest (URL, nurl) {

var request = new XMLHttpRequest(); 
request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
     if (request.status == 200 || request.status == 0){ 
      console.log(request.status); 
      //alert(request.responseText); 
      var txt= request.responseText; 
      console.log(txt); 
      return txt; 
      } 
     } 
     } 

request.open("POST",url, true); 
request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
request.send(nurl); 

}`

Ajax 호출

. 또한 url과 nurl 값을 준비한 후에이 Ajax 호출을 호출하는 여러 함수가 있으므로이 함수가 필요합니다. 필자는 호출 함수에서 응답을받는 방법 만 알면됩니다. 감사

+0

sendPostRequest가 비 차단/비동기 호출이라고 생각합니다. 따라서 jsonObj의 값은 작업 할 때 설정되지 않습니다. –

+0

@SimonMacDonald의 제안이 그럴듯한 것 같습니다. sendPostRequest 메소드를 보여 주시겠습니까? –

+0

@NickRoth 방법을 확인하십시오. 흠, 내 전화가 끝난 직후의 회선이 함수 호출 직후에 실행되고 있다고 생각합니다. 만약 그게 무슨 뜻인지. – user1900588

답변

1

를 해결하십시오 sendPostRequest (URL, nurl) 메소드 콜백으로 전달하는 기능을 만들었습니다. 이 콜백은 ajax 호출이 올바른 상태로 끝난 후에 만 ​​호출됩니다. 콜백 함수는 이후에 사용할 수있는 데이터를 지정합니다.

0

사용할 수는 :

var jsonData = $.parseJSON(stringJson); 
관련 문제