Android Can';t解析json数据

Android Can';t解析json数据,android,json,cordova,Android,Json,Cordova,我正在为android制作一个phonegap应用程序。我收到一个json字符串并试图解析它。这是一个非常小的数据 {“结果”:{“节点”:“32”} } 如果iam使用警报(request.responseText) 结果会显示出来,但如果我将此request.responseText返回给调用函数,并将其收集到变量中,如var x=somefunction();x包含未定义的。 var jsonObj = sendPostRequest(url,nurl); console.log(js

我正在为android制作一个phonegap应用程序。我收到一个json字符串并试图解析它。这是一个非常小的数据<代码> {“结果”:{“节点”:“32”} }

如果iam使用
警报(request.responseText)

结果会显示出来,但如果我将此request.responseText返回给调用函数,并将其收集到变量中,如
var x=somefunction();x包含未定义的。

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){

}`

ajax调用。还有多个函数在准备url和nurl值后调用这个ajax调用,所以我需要这个函数。我只需要知道如何在调用函数中返回响应。 谢谢

您可以使用:

var jsonData = $.parseJSON(stringJson);

解决方法:创建一个函数作为回调传递给sendPostRequest(url,nurl)方法。只有在ajax调用作为正确状态完成后,才会调用此回调。回调函数分配此后可以使用的数据。

我猜您的sendPostRequest是一个非阻塞/异步调用。因此,当您尝试使用jsonObj时,它的值并没有设置。您能告诉我们您的sendPostRequest方法吗?@NickRoth请检查方法。嗯,我认为调用后的行是在函数调用后立即执行的。如果这就是西蒙的意思。@SimonMacDonald:谢谢你的建议。我搜索了如何创建阻塞函数。我现在发送一个回调函数sendpostrest(url、nurl、callback);这个回调在收到响应后进行所有赋值。感谢您指向async关键字。它现在开始工作了。太好了。你应该自己回答这个问题并把它关闭。
var jsonData = $.parseJSON(stringJson);