2014-12-05 68 views
0

我目前正在研究PHP/Javascript/JQuery項目,其中PHP通過ajax請求將一些JSON編碼數據返回給網頁。在JSONObject中解碼JSON對象和JSON數組

JSON數據包含多個對象和數組,但我看不出如何讓處理數據。

下面是JSON是如何在PHP

$result = mysql_query($query); 
if ($result) 
{ 
    $data = array(); 
    while ($myrow = mysql_fetch_array($result)) 
    { 
     $data[] = $myrow['VersionName']; 
    } 

    $returnArray["RESULT"] = HelperClass::generateResponseArray(HTTPResponseCodes::OK, true, null, false); 
    $returnArray["DATA"] = $data; 
    return json_encode($returnArray); 

} 

generateResponseArray功能如下所示創建:

public static function generateResponseArray($httpStatusCode, $wasActionSuccessful, $message, 
       $jsonEncodeArray = true) 
{ 
    $response = array(); 
    $response["HTTPStatusCode"] = $httpStatusCode; 
    $response["actionSuccessful"] = $wasActionSuccessful; 
    $response["Message"] = $message; 
    if ($jsonEncodeArray) 
    { 
     return json_encode($response); 
    } 
    else 
    { 
     return $response; 
    } 
} 

下面是我如何我試圖通過JavaScript來解碼JSON。

function getVersions() 
{ 
    $.post("../Middleware/CrashManagement.php", 
     { 
      type: "GetVersions", 
      appID: getParameterValue("id") 
     }, 
     function (result) 
     { 
      var obj = JSON.parse(result); 
      var resultData = JSON.parse(obj.RESULT); 
      if (resultData.actionSuccessful === true) 
      { 
       alert("hello"); 
      } 
     } 
    ) 
} 

Chrome的沒有給我任何指針至於問題出在哪裏,它只是說,在出於某種原因我的HTML開始標記輸入意外結束,但它是與此功能,如果我去掉鍍鉻無更長時間報告此錯誤。

感謝您提供的任何幫助。

+0

任何你不使用'getJSON'而不是'post'的理由?另外,我非常肯定所有jQuery的Ajax函數都會返回分析數據,所以一旦數據返回,您應該只需'result.actionSuccessful'即可獲取該值。 – Andy 2014-12-05 10:30:37

回答

1

我認爲PHP的東西沒問題。

但是你解析返回的數據兩次,這是沒有必要的。

function getVersions() { 
    $.post("../Middleware/CrashManagement.php", 
     { type: "GetVersions", appID: getParameterValue("id") }, 
     function (result) { 
      // parse returned json string into a json object 
      var obj = $.parseJSON(result); 

      // No need to reparse this as its already done above 
      //var resultData = JSON.parse(obj.RESULT); 

      var resultData = obj.RESULT; 
      if (resultData.actionSuccessful === true) { 
       alert("hello"); 
      } 
     }) 
} 

如果您喜歡的瀏覽器Chrome的是,我可以建議你熟悉的Chrome javascript debugger

這將顯示你在哪裏,你是在第二個去錯。

+0

謝謝,我在想你必須單獨解碼包含在JSON中的每個對象/數組。我確實知道Chrome調試器,但除了我提出的問題之外,沒有提供任何錯誤。 – Boardy 2014-12-05 11:03:49