2013-01-07 194 views
0

我正在为android制作phonegap应用程序。我收到一个json字符串并试图解析它。这是一个非常小的数据。 {"result":{ "node":"32"} }无法解析json数据

如果IAM使用alert(request.responseText)
结果显示,但如果我这个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; 
    } 

我可以收集在该响应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

@尼克罗斯请检查方法。嗯,我认为我的函数调用后立即执行我的电话线。如果那是西蒙的意思。 – user1900588

回答

1

解决了这个问题:创建回调到sendPostRequest(URL,nurl)方法传递的功能。此回调仅在ajax调用完成为正确状态后才会调用。回调函数分配之后可以使用的数据。

0

你可以使用:

var jsonData = $.parseJSON(stringJson);