我目前正在开发一个 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/