javascript - 解码 JSONObject 内的 JSON 对象和 JSON 数组

标签 javascript php jquery json

我目前正在开发一个 PHP/JavaScript/jQuery 项目,其中 PHP 通过 ajax 请求将一些 JSON 编码数据返回到网页。

JSON 数据包含多个对象和一个数组,但我不知道如何处理数据。

下面是如何在 PHP 中创建 JSON

$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 开始标记处输入意外结束,但这与此功能有关,就好像我删除 chrome 不再报告此错误一样。

最佳答案

我认为 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

这会立刻告诉你哪里出了问题。

关于javascript - 解码 JSONObject 内的 JSON 对象和 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27313750/

相关文章:

Javascript 异步函数和 promise

php - 如何删除 ZF2 中的路线?

javascript - 将输入值保持在 10 以下

javascript - 如何强制以 10 为基数输入数字?

javascript - 我如何搜索整个数组以找到它的键?

javascript - CSS 不适用于 Javascript 创建的元素

php - 什么会导致 "too many database connections"

php - 这可能吗?从 PDF 到可编辑表格

jquery - 将 div 固定到 100% 容器的底部并允许 while 容器滚动

javascript - Safari扩展修改iframe?