2013-01-07 227 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);